在Visual Studio 2015调试器中启动Visual C++ ATL/WTL应用程序时,有时只要启动调试,Visual Studio就会断开一个不存在的断点,经典例外窗口:Visual Studio在调试时随机启动时断点
“Appname.exe已经命中一个断点”
Break |取消|继续
没有其他信息提供有关例外。当我闯入,有时它说
没有可用的源代码
,而另外一些时候是
框架不是模块
无论哪种方式,当我点击“Show disassembly”,这是我看到的:
...
77038EFD ?? ??
77038EFE ?? ??
77038EFF dec dword ptr [ecx-76FBDBBCh]
77038F05 pop esp
77038F06 and al,8
77038F08 jmp [email protected] (77025D93h)
77038F0D lea ecx,[ecx]
[email protected]:
77038F10 mov edx,esp
77038F12 sysenter
77038F14 lea esp,[esp]
77038F1B jmp [email protected] (77038F20h)
...
它打破正是在
77038EFF dec dword ptr [ecx-76FBDBBCh]
如果我跨过去,步入或继续,应用程序启动并正常工作。
应用程序编译时没有优化,并且所有调试标志都打开。 正如我在开始时所说的那样,它有时只会发生,比方说1/3的时间。启动之间的应用程序始终是相同的。
如果我在VS之外启动了相同的应用程序,它可以正常工作。
有什么想法可能会导致这种奇怪的行为?
尝试删除所有断点,清理并重建项目。 – 2016-04-14 13:00:40
@RawN完成,没有区别 –
你能看到哪个模块处于断点吗?这可能是一些DLL得到加载到过程故障 – zeromus