2016-04-14 50 views
2

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

有什么想法可能会导致这种奇怪的行为?

+0

尝试删除所有断点,清理并重建项目。 – 2016-04-14 13:00:40

+0

@RawN完成,没有区别 –

+0

你能看到哪个模块处于断点吗?这可能是一些DLL得到加载到过程故障 – zeromus

回答

0

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

即使断点被禁用,行为仍然保持,直到VS重新启动。

+1

更多优质的微软工程。 – Owl

相关问题