有时,当我使用 VS2012 在调试模式下启动/调试我的应用程序时,会出现一个对话框:
<blahblah.exe> 已触发断点。
它不包含其他信息,所以我点击 break 看看发生了什么。哦,但是后来我得到“wntdll.pdb not loaded”,并且没有关于该问题的其他信息。调用堆栈指向 ntdll.dll,此时我的应用程序似乎还没有开始执行。
此时选择继续将使应用程序/调试器像往常一样继续。
这种情况经常发生(大约 10 次发射中的 7 次)。我正在运行 Windows 8(64 位)和带有更新 1 的 Visual Studio 2012。
以前我有 Windows 7(64 位)和 VS2010,从来没有遇到过这个问题。这个特定项目已经从它在 (2010) 中创建的版本升级,所以这可能是问题的一部分。
以前有人遇到过这个问题吗?我不知道从哪里开始寻找原因。虽然我运行的是 64 位 Windows,但我应该提到我正在构建一个 32 位应用程序。
更新: 启用 Microsoft 符号服务器后,调用堆栈如下所示:
> ntdll.dll!_LdrpDoDebuggerBreak@0() Unknown
ntdll.dll!_LdrpInitializeProcess@8() Unknown
ntdll.dll!__LdrpInitialize@8() Unknown
ntdll.dll!_LdrpInitialize@8() Unknown
ntdll.dll!_LdrInitializeThunk@8() Unknown
我还应该补充一点,以防万一,我的代码中绝对没有手动设置断点。