我正在使用Visual Studio 2013 Express for Desktop。这是程序:
#include<cassert>
#include<iostream>
int main()
{
int a = 1;
assert(1 == 2);
}
当我在调试模式下运行时,断言失败,然后单击“重试”。然后触发断点,但我在变量列表中看不到a
,并且调用堆栈中没有函数main()
。
但是,如果我删除#include<iostream>
,一切都会好的。我将能够在变量列表中看到a
,并且main()
将显示在调用堆栈中。
有什么问题?
答案 0 :(得分:2)
你应该instruct Visual Studio 2013 to load the symbols from the MS Symbol Server。然后你得到这个堆栈跟踪:
&gt; msvcr120d.dll!_NMSG_WRITE(int rterrnum)第226号线C
msvcr120d.dll!abort()第62行C msvcr120d.dll!_wassert(const wchar_t * expr,const wchar_t * filename,unsigned int lineno)Line 156 C
ConsoleApplication1.exe!main()第7行C ++
[外部代码]
当选择_NMSG_WRITE时,我看不到变量a,但是当选择main()时,我可以在autos和locals窗格中看到变量a。
顺便说一句,您还应该考虑更新到Visual Studio 2013 Update 2。