巧用VS的调试功能可以帮助我们更好的理解程序,追踪变量各种值的变化等等,对循环、函数和递归的学习也有帮助。
如果你已经掌握了VS调试技巧,本文可以跳过(去年的稿qaq)。
以下内容主要摘自网络。
写在前面[1]
初学 C 语言程序设计,往往一看到自己编的程序出现错误就不知所措了。有些同学上机时,只要程序能够顺利运行,就认为大功告成,根本没想到程序还存在某些隐患。要想不犯或少犯错误,就需要了解 C 语言程序设计的错误类型和纠正方法。 C 语言程序设计的错误可分为语法错误、连接错误、逻辑错误和运行错误。
语法错误:在编写程序时违反了 C 语言的语法规定。语法不正确、关键词拼错、标点漏写、数据运算类型不匹配、括号不配对等都属于语法错误,在进入程序编译阶段,编译系统会给出出错行和相应“出错信息”。我们可以双击错误提示行,将光标快速定位到出错代码所在的出错行上。根据错误提示修改源程序,排除错误。
连接错误:如果使用了错误的函数调用,比如书写了错误的函数名或不存在的函数名,编译系统在对其进行连接时便会发现这一错误。纠正方法同 1。
逻辑错误:虽然程序不存在上述两种错误,但程序运行结果就是与预期效果不符。 逻辑错误往往是因为程序采用的算法有问题,或编写的程序逻辑与算法不完全吻合。逻辑错误比语法错误更难排除,需要程序员对程序逐步调试,检测循环、分支调用是否正确,变量值是否按照预期产生变化。
运行错误:程序不存在上述错误,但运行结果时对时错。 运行错误往往是由于程序的容错性不高,可能在设计时仅考虑了一部分数据的情况,对于其他数据就不能适用了。例如打开文件时没有检测打开是否成功就开始对文件进行读写,结果程序运行时,如果文件能够顺利打开,程序运行正确,反之则程序运行出错。要避免这种类型的错误,需要对程序反复测试,完备算法,使程序能够适应各种情况的数据。
如果语法和连接错误,程序直接就跑不起来;如果逻辑错误,建议梳理思路,想想那里写错了;运行错误也不怕,多踩几次坑多积累经验,比如是不是0做了除数?是不是爆了栈?是不是数组下标越了界?指针不可用?……
L学长上周提到的“在程序里声明数组的位置”问题,就是一个很好的小tip。相信大家都能体会到数组范围大一点的时候,全局于int main里面的局部的差异了吧。
VS篇
基本操作[5]
F9/单击设置断点->F5(开始调试(运行至断点处))->F11(逐语句(遇到函数则进入函数))
shift+F5 结束调试
shift+F11 退出函数
悬停鼠标查看表达式
这个最简单了大家应该都会……
如果你把你鼠标指向你感兴趣的一个变量,你会发现事情简单多了。而且,类和结构体可以通过单击展开。这样你就可以方便快捷的找到你想查看的变量了。
调试有时候很有挑战性,当你步入一个函数想看看哪块出错的时候,查看调用栈来想想值是从哪来的。另一些情况下,则需要添加一些监视表达式,或者查看局部变量列表,这通常还是花费一些时间的,但是。
设置下一条语句
一个典型的调试情况就是通过单步跟踪分析为什么一个函数调用失败了。当你发现一个函数调用的另一个函数返回错误的时候你会怎么做?重启调试?有更好的方法。拖动这个黄色的语句标识到你想下一步执行的语句前就可以了。比如你刚才失败的那块,然后步入。
编辑然后继续
了解即可。
调试一个复杂的程序的时候,在一个被调用很多次的函数处发现一个错误,但又不想浪费时间停下来、重新编译然后重新调试。没问题,可以仅仅在该处改正代码然后继续单步,VS会修正程序,然后继续