保存调试状态以跳过长时间的计算

Save the debugging state to skip long computations

本文关键字:长时间 计算 调试 状态 保存      更新时间:2023-10-16

我有一个c++程序,它从一个库完成的"繁重"计算开始。在发布模式下大约需要10秒,但在调试模式下大约需要15分钟。因此,在没有任何hack的情况下,如果我想调试程序的其余部分,我必须浪费初始时间。

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

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

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

很可能(至少部分)是由于STL中迭代器和相关函数中额外的调试代码造成的。查看一下迭代器调试的MS页面。

这可能不会花你15分钟到10秒,但它可能会把时间缩短到更接近10秒而不是15分钟。

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

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