c++ - Visual Studio 在调试时随机启动断点

标签 c++ visual-studio debugging exception visual-c++

在 Visual Studio 2015 调试器中启动 Visual C++ ATL/WTL 应用程序时,有时一旦启动调试,Visual Studio 就会在一个不存在的断点处中断,在经典的异常窗口中声明:

"Appname.exe has hit a breakpoint"
Break | Cancel | Continue

没有提供有关异常的其他信息。当我闯入时,有时它会说

No source code available

其他时候是

Frame not in module

无论哪种方式,当我点击“显示反汇编”时,这就是我看到的:

...
77038EFD  ?? ?? 
77038EFE  ?? ?? 
77038EFF  dec         dword ptr [ecx-76FBDBBCh]  
77038F05  pop         esp  
77038F06  and         al,8  
77038F08  jmp         __RtlUserThreadStart@8 (77025D93h)  
77038F0D  lea         ecx,[ecx]  
_KiFastSystemCall@0:
77038F10  mov         edx,esp  
77038F12  sysenter  
77038F14  lea         esp,[esp]  
77038F1B  jmp         _KiFastSystemCallRet@0 (77038F20h)  
...

恰好在

77038EFF  dec         dword ptr [ecx-76FBDBBCh] 

如果我跳过、进入或继续,应用程序将启动并正常工作。

应用程序编译时没有优化,所有调试标志都打开。 正如我在开始时所说,它只是有时发生,比方说 1/3 的时间。应用程序在两次启动之间始终相同。

如果我在 VS 之外启动同一个应用程序,它会正常工作。

关于什么可能导致这种奇怪行为的任何想法?

最佳答案

事实证明,这种奇怪的行为似乎是通过启用条件断点触发的。

即使断点被禁用,该行为也会继续存在,直到 VS 重新启动。

关于c++ - Visual Studio 在调试时随机启动断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36623820/

相关文章:

c++ - 使用标准构造函数传递临时对象

c++ - gcc 用于解析代码

c++ - 为什么 Windows Defender 扫描我的代码?

macos - Think Pascal 调试器是什么让它如此传奇?

c++ - VS2012 上的 decltype 内没有 ADL

c++ - 缺少类型说明符 - 假定为 int。注意 : C++ does not support default-int on function in ..h 文件

javascript - [WINJS][UWP] 标题栏上的返回按钮

c# - BackgroundWorker 循环中的方法更新进度条

c++ - Totalview获取QString的值

c++ - std::string 析构函数中的奇怪错误