【问题标题】:Crash Recovery of Data Strcutrues in C++ AppicationC++ 应用程序中数据结构的崩溃恢复
【发布时间】:2014-01-16 04:52:11
【问题描述】:

我有一个以高数据速率处理网络数据包的 C++ 应用程序。 此应用程序具有各种数据结构(STL 映射/列表等)维护应用程序状态。这些数据结构经常更新。 此应用程序的输入很容易出错,因此容易崩溃。

我想要做的是将应用程序状态(各种数据结构)保存到持久媒体,以便在崩溃后重新获得它。 是否有任何框架/库/实践可以帮助我实现同样的目标。

要求您不要指示此线程“消除崩溃漏洞”。

【问题讨论】:

    标签: c++ serialization crash recovery


    【解决方案1】:

    您应该看看 Kate Gregory 的 Restart and Recovery framework 食谱。这是一个视频,解释了如何采用这种策略。另外,请查看Application Recovery and Restart 以供参考。我已经使用并修改了这个食谱,它完美无缺。

    【讨论】:

      【解决方案2】:

      关于

      此应用程序的输入容易出错,因此容易崩溃

      不,输入不应导致应用程序崩溃*。这不是容易出错的输入。这是应用程序。

      如果您真的希望信息持续存在,那么您唯一能做的就是首先在每次崩溃之前保存它。

      崩溃预测器当然可以派上用场。

      但一般的概念是,坚持你需要坚持的东西,在崩溃之前几乎不可能这样做。

      在崩溃状态下,您不能依赖应用程序内部的任何东西

      在该状态下保存信息至少需要在使用该存储信息时进行广泛的验证。

      总之,

      • 最好是修复错误,但是

      • 如果做不到这一点,作为临时措施,您可以在信息可用时保留信息(崩溃之前),但随后

      • 我建议从头开始重新实现整个 shebang。


      *:当然,除非它是为此而设计的。

      【讨论】:

      • 通过容易出错的输入,我的意思是遵循 - '此应用程序执行 DPI,其中涉及网络应用程序/协议层解析。有多种情况下无法预测输入(例如,应用程序包规范的变化、不符合标准、专有协议、传输错误、网络应用程序中的错误等)'
      猜你喜欢
      • 1970-01-01
      • 2012-10-25
      • 2023-03-03
      • 1970-01-01
      • 2016-02-14
      • 2015-09-02
      • 2016-06-23
      • 2017-06-07
      • 1970-01-01
      相关资源
      最近更新 更多