编程 错误处理和调试技巧

        一直立flag说要开始写技术博客来记录自己的学习收获和心得,但是拖延症太严重了。最近在自学Larry Ullman的《写给大家看的c++书》,很喜欢这本书。今天看到了第十章《错误处理和调试》,觉得很有用,所以记录下来。就以此为开始我的第一篇技术博客吧~

        每一个错误都是一个学习如何在今后不犯错误的好机会。要想掌握调试技巧,最有效的学习办法时反复地尝试、犯错误、纠正错误(然后再尝试、再犯错、再纠错。。。这个过程很多时候都让人很抓狂,但是调试成功的时候真的很有成就感~)


       程序错误可以分为两大类:编译时错误和运行时错误

       1编译时错误

        这类错误其实是比较容易改正的,毕竟编译器会详细地告诉我们是哪里有什么问题。

        下面是人们在预防、查找和纠正编译时错误方面总结出来的一些好经验:

                      培养并保持一种编程风格;(尤其是在编写大型的程序时,如何命名变量和函数、按何种格式编写代码、如何缩进代码块等非常重要)

                      认真对待编译器给出的出错/警告消息;(有些警告消息也是很有用的)

                      三思而后行:先核查后打字;(冒失地修改源代码往往会使错误越改越多)

                      注意检查最基本的语法;(在开始查找和纠正大问题之前,必须确保代码里没有如括号不对称这样的小毛病)

                      把可能有问题的代码行改成注释,看错误是否还在;(如果错误还在,说明问题不在这行代码上;如果错误变了或者消失了,说明问题确实出在这行代码上)

                      换一种系统环境或开发工具试试;

                      检查是否已经把所有必要的文件都包括进来;(头文件、库文件等)

                      留意变量的作用域和命名空间;

                      休息一下;(这点挺重要,放松一下等头脑清醒了再回来解决问题)

                      使用调试工具;

                      把调试好的代码另外保存起来并不再改动它;(在修改程序之前最好也备份,万一越改越糟了还能回到不那么糟的状态。。。)

                      在成功找到并改正了一个错误之后,赶快回想自己是不是还在其他地方也犯过同样的错误,一并修改;

        2运行时错误

        运行时错误一般都不会有正式的出错消息,比编译时作物更难以查找和改正。

        程序是依照我们为它编写的代码而动作的,所以调试一个程序其实是确定它正在做什么和为什么那么做的过程。一旦掌握了它的来龙去脉,发现错误行为、确定错误根源和纠正错误行为就容易多了。以下是人们总结出来的一些好经验:

                       培养并保持一种编程风格;(杂乱无章是程序员最大的敌人,找到自己最喜欢的编程风格和习惯,然后一直保持下去)

                       多用注释,用好注释;(如果忘记了某段程序的用途和理由再调试起来就很费劲,注释要与代码同步)

                       注意操作符的优先级;(最保险的方法是用括号来确保一系列操作的顺序)

                       把变量的值打印出来以确认它们是否符合预期;

                       不要忘记对用户输入和文件输入进行合法性检查;(用户不是程序员,他们的输入往往和程序的预期输入不一致)

                       不要做任何假设;(不要想当然地认为一个应该发生的操作,如打开一个文件、创建一个新的内存块等等,就肯定会成功地发生)

                       不要忽视编译器给出的警告消息;(警告消息往往预示着潜在的运行时错误)

                       把程序划分成一些比较小的单元模块来测试;

                       使用调试工具;

                       其他一些技巧;(让函数返回错误代码,使用assert()函数,捕获异常)(由于是针对于c++的,这里就不再一一介绍啦)

  

上面总结的这些经验虽然都是以c++为背景的,但是很多东西其实都是相通的,所以对以其他的语言编写的程序进行调试也可以借鉴和参考哦~

你可能感兴趣的:(编程菜鸟的进阶之路)