我有一个c ++程序,它以库完成的“繁重”计算开始。 在发布模式下大约需要10秒,但在调试模式下大约需要15分钟。所以,没有任何黑客,如果我想调试程序的其余部分,我必须浪费初始时间。
一种可能的解决方案是在发布模式下保存计算结果,并在调试模式下使用预处理器指令读取它们:
#ifdef _DEBUG
read_result_from_file();
#else
do_heavy_computation();
save_result_to_file();
#endif
但我想知道是否存在其他解决方案。例如,是否可以保存调试会话的状态,以便从第二次开始我可以在初始计算后开始调试?
答案 0 :(得分:1)
许多IDE都可以为不同的(子)项目/库或甚至不同的翻译单元分配不同的调试选项。如果使用make和/或命令行编译器,那么您有类似的选项。因此,根据IDE,您可以将繁重的设置计算放入其自己的库中,并始终在发布模式下编译该库(或TU),除非您当然要调试计算本身。
这样,您可以调试程序的其他部分,但具有完全优化的计算。
答案 1 :(得分:1)
由于迭代器中的额外调试代码和STL中的相关函数,很可能是您的长运行时间(至少部分)。查看iterator debugging的MS页面。
这可能不需要15分钟到10秒,但它可能会降低到接近10秒而不是15分钟。