保存调试状态以跳过长时间的计算
Save the debugging state to skip long computations
我有一个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),当然,除非您想调试计算本身。
这样,您可以调试程序的其他部分,但具有完全优化的计算。
相关文章:
- 使用Boost Interprocess创建托管共享内存需要很长时间
- SFML RenderWindow打开窗口需要很长时间
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- Kafka C++客户端需要很长时间才能收到消息
- 给定使用 C++ 或 C,我如何测量在 linux 下进行线程切换需要多长时间?可能吗?
- asio::read() 需要很长时间,使用 asio::write 没有问题
- 将线程锁定很长时间
- 正在等待在非阻塞文件描述符上长时间运行ioctl
- 从ubuntu上的utc时间计算unix时间
- 即使长时间等待,C++线程也不会加入
- 连接() 在连接被拒绝时长时间挂起
- 为什么这段代码需要这么长时间才能用 g++ 编译?
- 如何在长时间运行的方法中等待信号?
- mbed 套接字连接需要很长时间
- Lambda 捕获此函数和长时间运行的函数
- std::fstream 需要很长时间才能将大数据写入.csv文件中
- 如何在长时间计算中进行C 的一次进度更新
- Qt C++ "keine Rückmeldung" - 长时间计算期间 GUI 中的错误
- 使用std::chrono计算持续时间,当它应该花费很长时间时,结果是0纳秒
- 保存调试状态以跳过长时间的计算