什么是debugging
找出并修复C语言代码中的错误叫debugging。
语法错误
所谓的语法错误就是没有遵守C语言的规则写代码。
怎么检测语法错误
- 通读代码,去发现明显的语法错误。
- 通过编译器编译去发现语法错误,识别每个错误的性质和位置。
然而,编译器可能会搞错。尝试只修复第一二个错误重新编译,其它错误可能会消失。或者在报错行的前面一行找错误。
语义错误
所谓语义错误就是代码含义错了。
语义错误是编译器找不出来的,只能靠你自己去发现。
怎么找语义错误
把你自己当成计算机,按照程序的执行顺序一步步推演代码。对比预期的结果和推演的结果,发现错误。
程序的状态
程序的状态仅仅是在程序执行中在一个给定的点上所有变量的值的集合。
怎么追踪程序的状态
方法一
你自己一步步执行程序。如果迭代很多,你只要做一点点迭代去看你的程序是否符合预期。然而你总是可能会按照你想要的方式去执行代码而不是按照你实际写的代码一样去执行代码,因此要忠于你的实际的代码。
方法二
在程序里插入一些printf()语句去监控程序中关键点的被选择的变量的值。看看这些值是怎么随着代码的执行而去变化的。在你让程序调试到你的预期之后,你可以移除这些插入的语句并且重新编译。
方法三
使用一个调试器。调试器是一种能让你一步步运行另一个程序并检查那个程序中的变量的值的程序。高级的调试器能显示源代码中哪行正在执行。