c – 为什么连接调试器的运行速度如此之慢?

前端之家收集整理的这篇文章主要介绍了c – 为什么连接调试器的运行速度如此之慢?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
发生了什么导致调试版本与未附加的版本相比,附加到调试器的速度要慢得多?它们都是相同的exe运行.

编辑:大多数答案都集中在断点上.我仍然像没有断点的泥浆,OutputDebugString或观察窗口中的任何东西一样运行.那么调试CRT,运行时堆栈检查和调试堆呢?

解决方法

如果它不是OutputDebugString或者成堆的断点会减慢一切,请尝试以下方法

> Windows调试堆 – 如果调试堆在调试器下运行,您的进程将获得调试堆,没有问题.要在Visual Studio调试器下运行时禁用此功能,请访问项目属性的调试页面,并将_NO_DEBUG_HEAP = 1添加到环境中.

(Windows调试堆与CRT调试堆是分开的.如果它在调试器下运行,你的发布版本也将获得Windows调试堆.)
>该程序加载了许多带符号的DLL.加载DLL时,Visual Studio会尝试为其查找符号.如果有可用的符号,这可能需要一些时间.除了重新安排你的程序以便它不经常加载DLL之外,你无能为力.
>检查对IsDebuggerPresent的任何调用 – 这可能会在调试器中运行和外部调用之间引入任意差异.

(作为最后的一次性建议 – 我也会怀疑在调试过程时异常(无论是C还是结构化)可能会更多地涉及.所以如果你的程序投入很多,那么当它的程序可能会慢一点时正在调试.)

猜你在找的C&C++相关文章