vc常用的调试命令,vc如何跟踪调试

  vc常用的调试命令,vc如何跟踪调试

  在VC调试中,一般需要设置断点,比如1)int I;2)int j;如果断点设置在int j,那么当程序运行到int j时,程序停止。此时,您可以查看程序的各种变量或执行状态。简单的方法是将鼠标停在你想看的变量上。将会有一个小的弹出窗口显示变量状态。

  1)设置断点。一种方法是在代码行的最左边点击鼠标,会出现一个红点。没错,快捷键就是把编辑光标,也就是脱字符号(不是鼠标光标),停在要设置断点的代码行,然后按F9,就会出现一个红点。

  2)设置断点,程序必须能够执行。例如:

  { //0

  int I=0;//1

  如果(0!=i) {//2

  int j=1;//3

  j;//4

  } else { //5

  int j=3;//6

  j=2;//7

  } //8

  当这里的断点设置为4时,因为int为常数0,所以这里的断点设置为4,所以程序不会路过,也不会停下来让我们检查状态。而此时的红点是空心红点,表示未命中断点。

  3)鼠标右键点击红色断点,会弹出调试快捷菜单。断点命中条件的设置会更多,不想多说。楼主可以自己试试。

  4)断点命中后,可以按F5继续运行。后面有什么断点都可以打。

  5)如果,在上面的例子中,在7中设置了断点之后,程序执行就停止在那里,而第7行的代码还没有执行,那么j应该等于3,而不是5。

  6)如果断点命中后,你不希望程序继续执行,而只是希望程序运行断点设置的那一行,那么只需按F10即可。比如上面的例子,在7中设置断点后,程序运行到这里就停止了。接下来,按下F10,程序仍将停止。此时程序运行后的状态是j=2,即j等于5。

  7)断点不是万能的。比如,你不能在画窗口的OnDraw函数中设置断点。一旦设置了断点,程序就会停止,然后按F5继续执行。由于程序中断后继续运行,需要在屏幕上绘制窗口。这时,OnDraw函数会再次被触发,断点会再次被命中,形成一个无限循环。很多地方不能设置断点。在相应的情况下还有多个嵌套的DLL调用。

  8)使用TRACE、TRACE0、TRACE1、TRACE2等宏。将调试信息打印到“输出窗口”中。TRACE后面的数字用几个参数表示,比如int j=3;TRACE1(_T(现在函数OnDraw中没有F9,我们可以得到debug_info j等于%d\n ),j);这样,就可以在输出窗口中获得OnDraw函数中代码的执行情况。

  9)MFC有一个专门将调试信息打印到“输出窗口”的库类,CDumpContext的一个对象实例是afxDump。

  用法:

  #ifdef _DEBUG

  int j=3;

  LPCTSTR pText=_T(更多调试方法);

  afx dump pText _ T( j=)j _ T( \ n );

  #endif

  这个调试类很厉害,需要专门学习。深入其中,你会发现它无比强大!

  10)TRACE宏默认不能打印UNICODE中文调试信息。如果希望打印UNICODE而不改变整个项目的字符集,可以在跟踪之前编写代码:

  #包含区域设置. h

  _tsetlocale(LC_CTYPE,_ T( CHS );

  这样,跟踪宏将正确工作

  呵呵,我为你写了这么多。以上是我常用的一些调试技巧,有些很简单,有些比较高级,需要单独学习。一开始建议楼主用F9设置断点。请确保命中了断点。这时候楼主一定要看看VC的菜单,尤其是“调试”菜单。菜单项会多很多,可以自己研究。更何况断点命中后,VC窗口也会不一样。会出现“输出”、“错误”、“监控”等调试窗口。你可以试着把你关心的程序变量拖到监控窗口,它们会再次出现。也可以在监控窗口写代码:“@err,hr”,代表程序线程的错误变量。高级的有反汇编窗口,寄存器窗口,内存窗口等。其使用相对较少。

  好了,一般的基本都在这里了。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: