编程调试技巧.doc

编程调试技巧.doc

ID:56951380

大小:45.00 KB

页数:25页

时间:2020-07-28

编程调试技巧.doc_第1页
编程调试技巧.doc_第2页
编程调试技巧.doc_第3页
编程调试技巧.doc_第4页
编程调试技巧.doc_第5页
资源描述:

《编程调试技巧.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编程调试技巧VC调试技术程序出错的类型大致可以分为两种,语法错误和逻辑错误。语法错误可以通过编译器的出错信息得到纠正。然而逻辑错误则不能,所以各大IDE(集成开发环境)中都提供了debug功能,用来分析和排除程序中的逻辑错误,排除逻辑错误的过程又称调试(或debug),下面谨以VC++6.0的调试环境做介绍。常用的调试命令主要有:stepinto命令快捷键:F11单步执行每条语句,在遇到函数的时候,系统将进入函数,单步执行其中的语句。stepover命令快捷键:F10单步执行每条语句,但在遇到函数时候,系

2、统将把函数当作“一条语句”来执行,自动执行其中的内容,而不进入函数内部单步执行。runtocursor命令快捷键:Ctrl+F10系统将自动执行到用户光标所指的语句前。(这个功能很有用,可以将精力集中到有问题的地方,从而节省调试时间)Go命令快捷键:F5系统将编译,连接,自动运行程序,但是会在程序设置了断点(breakpoint)处停下。BuildExcute命令快捷键:Ctrl+F5系统将编译,连接,运行编译好的程序代码,因此不会在断点处停留,但是在程序执行结束之后,系统会给一个Pause,以方便用户观

3、察输出结果。Stopdebug命令快捷键:Shift+F5本命令是用来终止动态调试过程的。动态调试的主要方法——watch(监视变量)在程序编译通过以后,当使用了stepinto,stepover,runtocursor,go命令使系统在程序执行的过程中停下之后,系统就会进入调试状态。调试过程中,你的程序执行窗口会调到后台,而系统窗口中会显示你的程序,其中的黄色箭头指向的是系统下一步将要执行的语句。而系统窗口下面的那个监视窗口就是我们将要介绍的重点.watch窗口被左右分成了两个部分,左面的那部分我们姑且

4、称之为“自动监视区”(即variable窗口),而右面的我们称之为“手动监视区”。(即watch窗口)自动监视区是系统自动跟踪的变量名。系统默认显示auto标签,那是显示在上一步执行过程中,程序中发生改变的变量。locals标签跟踪的是某一个函数中的所有变量。上面的findsourse组合框中指示的是当前在locals标签下在跟踪的变量是属于哪一个函数的。说明:当findsourse组合框中的内容变成灰色时,说明系统正在运行程序,或者等待输入端的数据(通常会是这个情况),此时应当注意程序执行窗口中的内容。

5、然而通常仅仅只有自动监视区所监视的变量是不够的,有时我们需要自己定义一些需要跟踪的变量——这个时候我们就要在手动监视区中输入变量名(也可以是系统认为合法的表达式)来跟踪我们需要的值。注意:当用户定义了一个指向数组的watch之后,在变量的左边会出现一个小的'+'号,表示这个数组可以“展开”——显示其中每一个下标所指示的内容,这与其他高级语言的IDE有些不同。值得一提的是VC++的一个人性化设置:在用户定义的变量很多时,往往需要通过滚屏才能看到所有的变量——VC++在手动监视区中设定了4个标签以方便用户的使

6、用,在这四个标签的功能是一样的!断点的设置与一些基本的调试技巧。断点(breakpoint)是指在调试过程中,只要运行到断点处,系统就会自动停下(除非是使用bulidexcute命令,但那是在执行编译好的代码,在严格意义上说,这不能算是一个调试命令),通常和go命令和stepover命令配合在一起使用。设置断点的方法:在程序代码中,移动到需要设置断点的那一行上,按F9键,你可以看到代码行的左端出现了一个红色的圆点——那是VC++中断点的标志,以后程序在调试过程中,每次执行到这里,都会停下,方便用户观察wa

7、tch中的内容。去除断点的命令与设置断点的命令相同:在已设置断点的地方,再按一次F9键,左端的红色圆点就消失,断点被去除了。有的时候,我们并不是不需要断点,而是“暂时”不需要它,这时可以在已设置断点的地方,按Ctrl+F9键,你可以看到原本实心的圆点变成了一个空心的圆圈——断点暂时失效了。恢复断点功能也是按Ctrl+F9。这个功能在程序很长,需要很多断点的时候尤其有用。条件断点技术——其实就是在一些分支语句内部设置断点,这个技术很实用,尤其在程序的某个分支部分发生问题的时候。关于断点设置在哪里。这可以说是

8、因人而异,而且是一个相当有艺术性的内容,我不想多说什么,但是有一个基本的原则就是,不要连续设置断点,所谓断点,也可以说是“段”点,在需要连续观察的地方,应当使用stepover或者stepinto命令。好了,调试命令基本上就是这些,下面我想谈谈我个人在调试过程中的一些心得和体会:1.动态调试不是万能的。虽然动态调试能解决几乎所有的非算法性的问题,但是动态调试要消耗大量的时间这点也是无庸质疑的——而且会扰乱编程者的思路。其实相当

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。