【问题标题】:Why do some programs work when using the debugger, but not when running a normal debug execution?为什么有些程序在使用调试器时可以工作,但在运行正常的调试执行时却不行?
【发布时间】:2013-02-27 15:16:15
【问题描述】:

我有好几次使用 Visual Studio 和其他东西编写程序,在换行符的某个地方。自然,我的第一个想法是在程序的早期设置一个断点,然后慢慢地逐行执行代码,直到出现错误。

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

为什么会这样?逐行单步执行代码,与仅仅在 dubug 模式下运行程序真的不同吗?

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

【问题讨论】:

    标签: windows visual-studio-2010 debugging crash


    【解决方案1】:

    其中一个原因可能是当程序“全速”运行和您在调试器中暂停线程时,多个执行线程之间的计时问题不同。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        在调试器中运行会大大改变运行时选项,例如。堆操作,以便可以检测到错误并将其呈现给用户。

        here

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

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

        【讨论】:

        • 在调试器下运行如何改变堆行为?
        • 正在研究,但关闭 LFH 是它所做的一件事,这会极大地改变程序的行为
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多