回 帖 发 新 帖 刷新版面

主题:[原创]求助vc6.0单步调试中的一点问题

在vc6.0中,设置断点单步跟踪调试程序,在跟踪到的函数中定义有Cstring类的对象str,明明已经执行过该行了,但是在watch栏中却显示symbol'str'not found  

    不知道那位朋友遇到过这种情况没,应该怎样解决呀,是编译器没有配置好吗?

谢谢了

回复列表 (共8个回复)

沙发

VC6.0编译器功能有限,很多东西(很多情况像是类、通过include放在头文件中的变量声明等)在Watch里看不到,可以自己加几个临时局部变量监测。

板凳


   谢谢这位朋友,元旦快乐。初学vc6.0 还得多多请教!

 但是同样的程序我在同学的机子上单步执行,在watch栏中却可以看到CString类的对象str,不知为何。

3 楼


使用:
build->build all
然后在调试
如果你是使用多个工程来进行编程的话
那么这是至关重要的.

4 楼

[quote]
但是同样的程序我在同学的机子上单步执行,在watch栏中却可以看到CString类的对象str,不知为何。[/quote]

不如把你的程序放上来再看看?

5 楼

谢谢大家 我在试试

6 楼

单步跟踪一下代码
    void CStereocodeDoc::OnFileOpen() 
{
// TOD Add your command handler code here
CString szInitialDir="E:\\立体图象数据\\*.BMP";//设定一个初始路径
    static 
  char szFilter[] = "BMP Files(*.bmp)|*.bmp|PGM Files(*.pgm)|*.pgm|All File(*.*)|*.*||";//打开对话框中只能选择bmp和all file 文件
//    CFileDialog FileDlg( TRUE, NULL,szInitialDir,OFN_HIDEREADONLY, szFilter );//出现对话框
CFileDialog dlg(TRUE, NULL,szInitialDir,OFN_HIDEREADONLY, szFilter);
CString str=".",str1="..";
LPCTSTR fn;
if(dlg.DoModal()!=IDOK)
{
  return;
}


CFile file;
file.Open(dlg.GetPathName(),CFile::modeRead);
str=file.GetFilePath();
str1=str.Right(4);
if(str1== ".bmp" || str1==".BMP") ImageType=0; //判断图像类型
else if(str1==".pgm" || str1==".PGM") ImageType=1;// [color=FF0000]已经执行到了这一行[/color]
watch栏中显示 symbol 'str ' not found;
另外我也重装了vc6.0了,还是老样子,在同学机子上调就没这个问题

7 楼

我试过可以,如此的话,你可以再试试,删除之前的watch,在单步到这个函数中时,再用鼠标选定str拖放到watch中,因为有可能你是在其它函数过程中添加的str。

换句话说,如果在不同的函数A、B中有同名变量str,为A添加的str只有单步到A时才能看见,为B添加的只能单步到B时才能看见。

8 楼


问题解决了 谢谢大家的帮助。

要学好vc真不容易啊,以后还得多多请教[em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册