【问题标题】:Save the debugging state to skip long computations保存调试状态以跳过长时间的计算
【发布时间】:2013-04-12 08:11:21
【问题描述】:

我有一个 c++ 程序,它以库完成的“繁重”计算开始。 在发布模式下大约需要 10 秒,但在调试模式下大约需要 15 分钟。所以,没有任何技巧,如果我想调试程序的其余部分,我必须浪费最初的时间。

一种可能的解决方案是在发布模式下将计算结果保存到文件中,并在调试模式下使用预处理器指令读取它们:

#ifdef _DEBUG
    read_result_from_file();
#else
    do_heavy_computation();
    save_result_to_file();
#endif

但我想知道是否存在其他解决方案。例如,是否可以保存调试会话的状态,以便从第二次开始我可以在初始计算后开始调试?

【问题讨论】:

  • 计算后的断点?或者如果在调试模式下进行模拟计算?
  • 在虚拟机中运行程序。计算完成后,拍摄快照。要再次调试,请恢复快照。
  • 我猜他有那个断点,但是如果计算持续那么长时间,它不会节省他的时间。
  • this 可能会有所帮助。您也可以尝试大部分时间调试发布版本,并在不够时切换到调试。

标签: c++ debugging visual-studio-2012 save


【解决方案1】:

很可能您的运行时间长(至少部分)是由于迭代器中的额外调试代码和 STL 中的相关函数。查看iterator debugging 的 MS 页面。

这可能不会花费您的 15 分钟到 10 秒,但可能会缩短到比 15 分钟更接近 10 秒的时间。

【讨论】:

    【解决方案2】:

    许多 IDE 可以将不同的调试选项分配给不同的(子)项目/库,甚至分配给不同的翻译单元。如果你使用 make 和/或命令行编译器,你有类似的选项。因此,根据 IDE,您可以将繁重的设置计算放入其自己的库中,并始终在发布模式下编译该库(或 TU),除非您当然想调试计算本身。

    这样,您可以调试程序的其他部分,但具有完全优化的计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 2017-04-05
      • 2018-01-23
      相关资源
      最近更新 更多