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

时间:2016-04-14 12:56:23

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

在Visual Studio 2015调试器中启动Visual C ++ ATL / WTL应用程序时,一旦启动调试,有时 Visual Studio会在经典的Exception窗口上打破现有的断点:< / p>

  

“Appname.exe遇到了断点”   
休息|取消|继续

没有提供有关该例外的其他信息。当我闯入时,有时会说

  

没有可用的源代码

而其他一些时间是

  

框架不在模块中

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

...
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之外启动相同的应用程序,它可以正常工作。

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

1 个答案:

答案 0 :(得分:0)

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

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