0

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

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

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

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

4

2 回答 2

1

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

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

于 2013-04-12T08:29:21.357 回答
1

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

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

于 2013-04-12T08:35:25.697 回答