为什么有些程序在使用调试器时有效,而在运行正常的调试执行时却没有?

时间:2013-02-27 15:16:15

标签: windows visual-studio-2010 debugging crash

我曾经多次使用Visual Studio编写程序,在某些地方沿着换行符。当然,我的第一个想法是在程序的早期设置断点,然后逐行逐步执行代码,直到我到达错误。

但是,经常在调试器中慢慢单步执行代码时,我发现一切正常。但是,当我尝试在没有断点的情况下运行程序时出现问题。

为什么会这样?逐步执行代码是否与在dubug模式下运行程序有什么不同?

(我不是在谈论调试与发布,我在谈论调试与逐行调试)

3 个答案:

答案 0 :(得分:2)

一个原因可能是,当程序“全速运行”时以及在调试器中暂停线程时,多个执行线程之间会出现计时问题。

答案 1 :(得分:0)

这可能是由于某些线程不安全的操作似乎在单步执行代码时发生,但在运行时却没有。排除了编译器优化,因为您确定正在运行调试版本。

答案 2 :(得分:0)

在调试器内部运行实质上改变了运行时选项,例如。堆操作,以便可以检测错误并向用户显示错误。

请参阅here

  

在任何调试器,某些堆调试选项下运行进程时   为流程中的所有堆自动启用。

这不是您的问题,但可能是候选人。