VC++中调试的问题:无法查看局部变量的值

只能查看当前类的成员变量,或者当前函数的参数,但是函数内定义的局部变量在watch窗口中看不到(我确定当前范围是有效的),“CXX0017: Error: symbol "sth" not found”。

可能的原因是什么呢?

Visual Studio .Net 2003
对不起,回答的都不对
还有一个现象,就是即使是函数参数,如果函数中没有使用到的话(当然编译时还有个Warning),watch里也看不到。

再说一遍,我确定断点处该变量是有效的。我现在怀疑是编译器加了比较高的优化选项,有人知道VC++中编译优化选项在哪控制么?类似GCC中的-O2之类的

第1个回答  2008-07-10
你的问题可能在于控件还没有创建:
例如:

if (m_adoDC1.GetSafeHWnd())
{
m_adoDC1.GetClientRect(rect);

iHeight=rect.Height();
iWidth=rect.Width();

m_adoDC1.MoveWindow(cx,cy,iWidth,iHeight,TRUE);

m_dataGrid1.MoveWindow(0,0,cx,cy-iHeight,TRUE);
}Top

另外不要在Release下调试。
第2个回答  2008-07-10
局部变量!!!
在调用它的函数内部有效 ...
在它操作的地方下断点...就可以了...
你看不到是因为没在这个调用它的函数内下任何断点(我说的是函数内)

不想下断点或没办法下, 那就TRACE出来
第3个回答  2008-07-11
你需要把断点设在那个局部变量上

void a(int b)
{
XXXXXXXX;把断点摄在这里可以看到b
int c;
int c=XXXX;把断点社这里并按F10或者在下一行社断点就能看到
XXXXXXXX;
}
第4个回答  2008-07-11
你从它的定义开始设置断点尝试一下

谁会想到,你会查看没有用到的变量????
汗!!汗!!!!!!!!!!!!!!!!
第5个回答  2008-07-10
比如静态变量是看不到的,通过TRACE或者OutputDebugString打印出来看。本回答被提问者采纳
相似回答