为什么某些程序在使用debugging器的时候工作,而在运行正常的debugging执行时却不能?

我曾经多次用Visual Studio编写一个程序,并且在某个地方的某个地方。 当然,我的第一个想法是在程序的早期设置一个断点,然后慢慢地逐行执行代码,一行一行,直到出现错误。

但是经常我发现在debugging器中缓慢地执行代码时,一切正常。 然而,当我只是试图运行没有断点的程序出了问题。

为什么会这样呢? 逐行执行代码与实际不同,只是在dubug模式下运行程序?

(我不是在谈论debuggingvs发布,我正在谈论debuggingvs逐行debugging)

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

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

在调试器内部运行,实质上改变了运行时选项,例如。 堆操作,以便可以检测到错误并将其呈现给用户。

看到这里 。

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

这不是你的问题,而是一个可能的候选人。