程序在“释放”模式下消失,但是在插入Beep0,0的情况下可以正常工作

问题描述

| 该程序在调试器下(即使在发布模式下)也可以正常工作,因此我必须插入Beep(500,200)才能找出最后一个失败的地方。我将其范围缩小为调用CreateProcess()的线程proc。如果在调用之后插入了提示音,则程序将消失而没有声音,但是如果在之前插入了提示音,它将发出蜂鸣声并继续执行而不会出现错误。 为避免发出烦人的哔哔声,我将其替换为Beep(0,0),并感到非常高兴。我确实尝试过Sleep(0),但这不起作用。 我曾经以Lisp程序员的身份工作,并且有类似的经历:插入(princ \“ debug \”)直到找到该位置,然后将其替换为(princ) 问题是为什么?     

解决方法

        根据您的命名约定,我认为您使用的是Visual Studio,但您没有这样说(您可以添加有关此的信息,会有所帮助)。 如果您使用的是Visual Studio,则可以调试在发布模式下编译的程序,您必须仅附加到他的进程,并且可以开始设置一些断点,但是蜂鸣声的调试无效,因为在需要设置/时必须再次编译程序更改\“ checkpoint \”,您将无法正确调试堆栈损坏问题,也无法检查堆栈!