在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之外启动相同的应用程序,它可以正常工作。
关于什么可能导致这种奇怪行为的任何想法?
答案 0 :(得分:0)
事实证明,似乎这个奇怪的行为是通过启用条件断点来触发的。
即使断点被禁用,行为也会继续保持,直到VS重新启动。