分享

VC6断点调试技巧 | C语言研究中心

 pphsy 2018-05-08

在第一篇中,我们为大家介绍了如何用VC6进行断点调试,可以实现程序的分步执行。今天我们将继续深入,进行更多断点调试的学习。

首先,写一个例子程序:

  1. #include
  2. int fun()
  3. {
  4. printf("Welcome to C language Reserch Center\n");
  5. return 0;
  6. }
  7. int main()
  8. {
  9. int i=0;
  10. int sum=0;
  11. fun();
  12. while(i++<100)
  13. {
  14. sum+=i;
  15. }
  16. printf("1+2+3+...+99+100 = %d\n",sum);
  17.  
  18. return 0;
  19. }

 

大家可以先行阅读以下程序,比较简单,调用一个自定义函数输出一句话,其二,计算1+2一直加到100的和并输出。

然后,我们做练习,运用上节课的断点调试逐步跟我们这个程序。

首先,我们在第一行int i=0;这里设置一个断点,运行它,如图:

VC6断点调试技巧<第二篇>

注意看到,黑框里什么都没有输出,并且下方的变量监视里i的值还是垃圾值,因为还未执行这句话。

然后我们F10下一步执行。但当大家执行到fun();函数调用这条语句时,编译器把它当成一句话来执行,并未进入函数内部,而是一步带过,如图:

 

VC6断点调试技巧<第二篇>

大家可自行上机实验,可以发现F10单步执行的单步是以一条C语言语句为单位的。鉴于这种情况,当我们怀疑fun函数时如何调试呢?

除了可以在fun函数内部设置断点以外,我们还有一个办法,就是不按F10,而按F11,F11的意思是单步执行并介入,也就是说遇到单出的一句话就和F10没什么区别了,但如果是函数调用这种还能“进入”的语句,它就会逐层深入进去!大家能理解吗?

那我们来试一试,重新开始,回到程序一开始的断点处,在黄色箭头指向到fun()时,按F11,大家注意观察!

黄色的箭头会进入fun函数内部,如图:

VC6断点调试技巧<第二篇>

然后可以逐步跟踪fun函数内部的语句了! 怎么样?试试吧

当然,这里提示一下,对于我们想深入研究的函数我们可以F11介入一探究竟,但如果一直F11的话可能会一直深入程序底层可能按不出来哦!另外,对于printf这种库函数,如果还按F11的话,由于printf已经编译好,只能看到printf的汇编语句。所以大家还是根据情况按F10还是F11哦!

 

由于大家在实际的开发工作当中,程序往往比我们的例子程序复杂很多,比如多个函数、嵌套、库函数调用等等,也有误进入函数内部,或者已经排查没有问题的,如果想尽早结束此函数退出回到上一层调用处,如何实现呢?答案是:按shift+F11,既可以跳出函数,返回到当前断点函数调用的下一步。

好的,讲到这里,大家请自行实验,熟练掌握F10和F11以及shift+F11的混合使用!

请大家亲自上机实验!

 

以上


C语言网, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明VC6断点调试技巧<第二篇>
喜欢 (11)分享 (9)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多