2013-02-27 72 views
1

我已经有好几次使用Visual Studio编写程序的地方,并且沿着换行符的某处。当然,我的第一个想法是在程序的早期设置一个断点,然后慢慢地逐行遍历代码,一行一行,直到出现错误。为什么某些程序在使用调试器时工作,但在运行正常的调试执行时不能运行?

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

为什么会发生这种情况?逐行执行代码与实际上不同,只是在dubug模式下运行程序?

(我不是在谈论调试VS版本,我说的是调试VS行由行调试)

回答

2

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

0

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

0

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

请参阅here

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

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

+0

如何在调试器下运行更改堆行为? – tenfour 2013-02-27 15:24:00

+0

研究,但关闭LFH是它的一件事,这可以大大改变程序的行为 – 2013-02-27 15:25:48

相关问题