VC和VS这些高级工具在我手里,感觉和古老的tubro C差不多,在别的地方看到什么跟踪变量了,一步一执行了,中断了都不会用。具体来说,假如在程序运行时出现一个内存不能为读的错误,我的方法是在程序执行的地方隔一段程序放一个AfxMessageBox(),看是哪里出错了,然后定义一个CString,把相关变量转化成字符串,让后把这个CString用AfxMessageBox()谈出来,查看。我这个方法非常苯,如果有循环,非常头疼。所以这里问问大家怎么调试,具体说下,一些名词我都不懂,最好有帖图。谢谢

解决方案 »

  1.   

    假如出现一个内存不能为读的错误,显然是指针出错了,我的思路是在出错的这个地方,查看指针变量的值,但是我不知道怎么查看,只能用一个AfxMessageBox()来看。上次作图像处理,行和列的循环里,指针出问题了,很郁闷。
      

  2.   

    按F5调试运行,出错时选择“重试”,在下一个错误信息框中选择“中断”,此时程序会停在出错的代码上,如果是VC库中的代码,你可以查看“调用堆栈”窗口,这里面显示的是执行过程中逐层调用的各个函数,从这里可以找出是自己的哪行代码引起的错误。
      

  3.   

    设断点不会?单步不会?Turbo C的时代既就有了。看看MSDN中有关调试程序的内容吧。
      

  4.   

    在你估计指针出错的地方,按F9添加断点,然后按F5开始调试,执行到断点处再F10单步调试
    通常调试界面上会显示一个列表列出变量的值,比如你要观察的指针
      

  5.   

    MSDN里怎么找有关调试程序的内容阿,
      

  6.   

    http://www.codeguru.cn/VC&MFC/VCGaoJiBianCheng/index.htm#_Toc419881652
      

  7.   

    《Windows程序调试》Debugging Windows Programs
    《debugging application》
    《Visual C++实践与提高. IDE篇》
    //这几本书找找看//VC调试入门
    http://developer.51cto.com/art/200612/36664.htm  //作者阿荣不知道是不是版上的经常出现的“阿荣”,你可以联系他看看
      

  8.   


    用TRACE宏输出。另外,出现“内存不能为读”错误的时候,一般会出现断言失败的对话框,出现对话框后点击“重试”后,看调用堆栈,看是哪儿的错误。
    其他楼上几位差不多都说了。