我曾经多次使用Visual Studio编写程序,在某些地方沿着换行符。当然,我的第一个想法是在程序的早期设置断点,然后逐行逐步执行代码,直到我到达错误。
但是,经常在调试器中慢慢单步执行代码时,我发现一切正常。但是,当我尝试在没有断点的情况下运行程序时出现问题。
为什么会这样?逐步执行代码是否与在dubug模式下运行程序有什么不同?
(我不是在谈论调试与发布,我在谈论调试与逐行调试)
答案 0 :(得分:2)
一个原因可能是,当程序“全速运行”时以及在调试器中暂停线程时,多个执行线程之间会出现计时问题。
答案 1 :(得分:0)
这可能是由于某些线程不安全的操作似乎在单步执行代码时发生,但在运行时却没有。排除了编译器优化,因为您确定正在运行调试版本。
答案 2 :(得分:0)
在调试器内部运行实质上改变了运行时选项,例如。堆操作,以便可以检测错误并向用户显示错误。
请参阅here。
在任何调试器,某些堆调试选项下运行进程时 为流程中的所有堆自动启用。
这不是您的问题,但可能是候选人。