Edit

代码调试的技巧

Leading

在编写代码过程中, 调试代码是一件非常重要的事情。 尤其是对于新接触一门语言时, 掌握必要的调试技巧对于掌握这门语言很有帮助。 以下将总结一些常用的代码调试技巧。

Avoiding

如何必免一些不必要的代码错误? 这需要规范化 的编程。 任何一门语言都有一定的编程规范。 比如Python 的PEP8 标准。
这些规范主要解决了几件事情:

  • 变量函数类的命名问题, 是下划线的方式还是驼峰式。列如: 在java中规定类名首字母要大写, 采用驼峰式, 函数名首字母要小写。 在go中规定public的函数首字母要大写
  • 括号, 空格的位置以及必要与否。 比如一般规定=左右要控两格, 如a = b 这样是规范的 a=b 则是不规范的。 列如规定要用4个还是2个空格来代替tab, 列如规定{ 在同一行还是单独一行
  • 一定的设计模式, 如面向对象的方法MVC的模式, 等等。
  • 注释的方式

遵循一定的设计模式,可以让你的代码更可读,也容易必免一些不必要的问题。 这里推荐一本书<<重构:改善改善既有代码的设计>> 阅读前面两三章就会觉得受益无穷

另外还需要一个强大的功能完善的开发环境。 尤其是代码提示, 拼写提示, auto format 等等。

出错了后的调试

总结几种经常用到的调试方法。

  1. 最重要的一点,根据你的直觉,当程序出错时,直觉会告诉你错误在哪里, 根据你的直觉能最快的定位问题
  2. 输出一些必要的调试信息, 如变量的值, 程序是否调用到你的方法或函数
  3. 反正法, 在代码里嵌入一个明显错误的代码,让程序抛出异常,如 验证文件是否被读取到,可以把文件名换成一个明显不存在的名字。 再如,验证某个方法是否被调用到,可以写一个明显错误的语句如 1/0. 这在动态语言缺少必要调试工具的情况下十分行之有效。如调试php代码, 我会在一个方法下调用一个明显不存在的function,看是否有异常。
  4. 使用调试工具。感觉调试工具对于调试一个小程序很有效果。 然而它的功能也很有限,而且效率也不高。 如果使用调试工具我们要做到,合更的设置断点, 合理的去写监控表达式。
  5. 对于拼写错误。根据个人的经验。 80%的程序错误都是由于拼写产生的。尤其是在写动态语言的时候。 应对方式: 你的开发环境能够自动的提示你变量的拼写,等等,最好当选中一个变量名的时候, 上下文中相同的变量名都会被提示出来这是最理想的。 当程序出错时,可以逐一检查变量名,采用复制粘贴的方法以确保拼写一致, 有时候缺一个字母根本看不出来。(当然静态语言在这一点上有天然的优势。编译过程中编译器已经帮你指出了大部分拼写错误)
  6. 使用diff工具。当你需要知道两个看着一模一样的文件或文本是否有不同, 有哪些不同的时候, diff 会帮你很好的解决这个问题,diff是一个linux命令,具体使用 man diff 查看
  7. 当你实在没有办法, 不知道程序哪出错了, 删掉现在的代码重写一遍吧,也许就是由一个你实在看不出的拼写造成的。写第二遍的时候也许自然就好了, 我遇到过很多次这种情况
%23%u4EE3%u7801%u8C03%u8BD5%u7684%u6280%u5DE7%0A@%28tech%29%5B%u4EE3%u7801%u8C03%u8BD5%5D%0A%0A%23%23%20Leading%0A%u5728%u7F16%u5199%u4EE3%u7801%u8FC7%u7A0B%u4E2D%uFF0C%20%u8C03%u8BD5%u4EE3%u7801%u662F%u4E00%u4EF6%u975E%u5E38%u91CD%u8981%u7684%u4E8B%u60C5%u3002%20%u5C24%u5176%u662F%u5BF9%u4E8E%u65B0%u63A5%u89E6%u4E00%u95E8%u8BED%u8A00%u65F6%uFF0C%20%u638C%u63E1%u5FC5%u8981%u7684%u8C03%u8BD5%u6280%u5DE7%u5BF9%u4E8E%u638C%u63E1%u8FD9%u95E8%u8BED%u8A00%u5F88%u6709%u5E2E%u52A9%u3002%20%u4EE5%u4E0B%u5C06%u603B%u7ED3%u4E00%u4E9B%u5E38%u7528%u7684%u4EE3%u7801%u8C03%u8BD5%u6280%u5DE7%u3002%0A%0A%23%23%20Avoiding%20%0A%u5982%u4F55%u5FC5%u514D%u4E00%u4E9B%u4E0D%u5FC5%u8981%u7684%u4EE3%u7801%u9519%u8BEF%uFF1F%20%u8FD9%u9700%u8981**%u89C4%u8303%u5316**%20%u7684%u7F16%u7A0B%u3002%20%u4EFB%u4F55%u4E00%u95E8%u8BED%u8A00%u90FD%u6709%u4E00%u5B9A%u7684%u7F16%u7A0B%u89C4%u8303%u3002%20%u6BD4%u5982Python%20%u7684**PEP8**%20%u6807%u51C6%u3002%0A%u8FD9%u4E9B%u89C4%u8303%u4E3B%u8981%u89E3%u51B3%u4E86%u51E0%u4EF6%u4E8B%u60C5%uFF1A%20%0A+%20%u53D8%u91CF%u51FD%u6570%u7C7B%u7684%u547D%u540D%u95EE%u9898%uFF0C%20%u662F%u4E0B%u5212%u7EBF%u7684%u65B9%u5F0F%u8FD8%u662F%u9A7C%u5CF0%u5F0F%u3002%u5217%u5982%uFF1A%20%u5728java%u4E2D%u89C4%u5B9A%u7C7B%u540D%u9996%u5B57%u6BCD%u8981%u5927%u5199%uFF0C%20%u91C7%u7528%u9A7C%u5CF0%u5F0F%uFF0C%20%u51FD%u6570%u540D%u9996%u5B57%u6BCD%u8981%u5C0F%u5199%u3002%20%u5728go%u4E2D%u89C4%u5B9Apublic%u7684%u51FD%u6570%u9996%u5B57%u6BCD%u8981%u5927%u5199%0A+%20%u62EC%u53F7%uFF0C%20%u7A7A%u683C%u7684%u4F4D%u7F6E%u4EE5%u53CA%u5FC5%u8981%u4E0E%u5426%u3002%20%u6BD4%u5982%u4E00%u822C%u89C4%u5B9A%60%3D%60%u5DE6%u53F3%u8981%u63A7%u4E24%u683C%uFF0C%20%u5982%60a%20%3D%20b%60%20%u8FD9%u6837%u662F%u89C4%u8303%u7684%20%60a%3Db%60%20%u5219%u662F%u4E0D%u89C4%u8303%u7684%u3002%20%u5217%u5982%u89C4%u5B9A%u8981%u75284%u4E2A%u8FD8%u662F2%u4E2A%u7A7A%u683C%u6765%u4EE3%u66FF%60tab%60%uFF0C%20%u5217%u5982%u89C4%u5B9A%60%7B%60%20%u5728%u540C%u4E00%u884C%u8FD8%u662F%u5355%u72EC%u4E00%u884C%0A+%20%u4E00%u5B9A%u7684%u8BBE%u8BA1%u6A21%u5F0F%uFF0C%20%u5982%u9762%u5411%u5BF9%u8C61%u7684%u65B9%u6CD5%60MVC%60%u7684%u6A21%u5F0F%uFF0C%20%u7B49%u7B49%u3002%0A+%20%u6CE8%u91CA%u7684%u65B9%u5F0F%0A%0A%u9075%u5FAA%u4E00%u5B9A%u7684%u8BBE%u8BA1%u6A21%u5F0F%uFF0C%u53EF%u4EE5%u8BA9%u4F60%u7684%u4EE3%u7801%u66F4%u53EF%u8BFB%uFF0C%u4E5F%u5BB9%u6613%u5FC5%u514D%u4E00%u4E9B%u4E0D%u5FC5%u8981%u7684%u95EE%u9898%u3002%20%u8FD9%u91CC%u63A8%u8350%u4E00%u672C%u4E66%3C%3C%5B%u91CD%u6784%uFF1A%u6539%u5584%u6539%u5584%u65E2%u6709%u4EE3%u7801%u7684%u8BBE%u8BA1%5D%28http%3A//book.douban.com/subject/1229923/%29%3E%3E%20%u9605%u8BFB%u524D%u9762%u4E24%u4E09%u7AE0%u5C31%u4F1A%u89C9%u5F97%u53D7%u76CA%u65E0%u7A77%0A%0A%u53E6%u5916%u8FD8%u9700%u8981%u4E00%u4E2A%u5F3A%u5927%u7684%u529F%u80FD%u5B8C%u5584%u7684%u5F00%u53D1%u73AF%u5883%u3002%20%u5C24%u5176%u662F%u4EE3%u7801%u63D0%u793A%uFF0C%20%u62FC%u5199%u63D0%u793A%uFF0C%20auto%20format%20%u7B49%u7B49%u3002%20%0A%0A%23%23%20%20%u51FA%u9519%u4E86%u540E%u7684%u8C03%u8BD5%0A%0A%u603B%u7ED3%u51E0%u79CD%u7ECF%u5E38%u7528%u5230%u7684%u8C03%u8BD5%u65B9%u6CD5%u3002%0A%0A1.%20%u6700%u91CD%u8981%u7684%u4E00%u70B9%uFF0C%u6839%u636E%u4F60%u7684%u76F4%u89C9%uFF0C%u5F53%u7A0B%u5E8F%u51FA%u9519%u65F6%uFF0C%u76F4%u89C9%u4F1A%u544A%u8BC9%u4F60%u9519%u8BEF%u5728%u54EA%u91CC%uFF0C%20%u6839%u636E%u4F60%u7684%u76F4%u89C9%u80FD%u6700%u5FEB%u7684%u5B9A%u4F4D%u95EE%u9898%0A2.%20%u8F93%u51FA%u4E00%u4E9B%u5FC5%u8981%u7684%u8C03%u8BD5%u4FE1%u606F%uFF0C%20%u5982%u53D8%u91CF%u7684%u503C%uFF0C%20%u7A0B%u5E8F%u662F%u5426%u8C03%u7528%u5230%u4F60%u7684%u65B9%u6CD5%u6216%u51FD%u6570%0A3.%20%u53CD%u6B63%u6CD5%uFF0C%20%u5728%u4EE3%u7801%u91CC%u5D4C%u5165%u4E00%u4E2A%u660E%u663E%u9519%u8BEF%u7684%u4EE3%u7801%uFF0C%u8BA9%u7A0B%u5E8F%u629B%u51FA%u5F02%u5E38%uFF0C%u5982%20%u9A8C%u8BC1%u6587%u4EF6%u662F%u5426%u88AB%u8BFB%u53D6%u5230%uFF0C%u53EF%u4EE5%u628A%u6587%u4EF6%u540D%u6362%u6210%u4E00%u4E2A%u660E%u663E%u4E0D%u5B58%u5728%u7684%u540D%u5B57%u3002%20%u518D%u5982%uFF0C%u9A8C%u8BC1%u67D0%u4E2A%u65B9%u6CD5%u662F%u5426%u88AB%u8C03%u7528%u5230%uFF0C%u53EF%u4EE5%u5199%u4E00%u4E2A%u660E%u663E%u9519%u8BEF%u7684%u8BED%u53E5%u5982%201/0.%20%u8FD9%u5728%u52A8%u6001%u8BED%u8A00%u7F3A%u5C11%u5FC5%u8981%u8C03%u8BD5%u5DE5%u5177%u7684%u60C5%u51B5%u4E0B%u5341%u5206%u884C%u4E4B%u6709%u6548%u3002%u5982%u8C03%u8BD5php%u4EE3%u7801%uFF0C%20%u6211%u4F1A%u5728%u4E00%u4E2A%u65B9%u6CD5%u4E0B%u8C03%u7528%u4E00%u4E2A%u660E%u663E%u4E0D%u5B58%u5728%u7684function%uFF0C%u770B%u662F%u5426%u6709%u5F02%u5E38%u3002%0A4.%20%u4F7F%u7528%u8C03%u8BD5%u5DE5%u5177%u3002%u611F%u89C9%u8C03%u8BD5%u5DE5%u5177%u5BF9%u4E8E%u8C03%u8BD5%u4E00%u4E2A%u5C0F%u7A0B%u5E8F%u5F88%u6709%u6548%u679C%u3002%20%u7136%u800C%u5B83%u7684%u529F%u80FD%u4E5F%u5F88%u6709%u9650%uFF0C%u800C%u4E14%u6548%u7387%u4E5F%u4E0D%u9AD8%u3002%20%u5982%u679C%u4F7F%u7528%u8C03%u8BD5%u5DE5%u5177%u6211%u4EEC%u8981%u505A%u5230%uFF0C%u5408%u66F4%u7684%u8BBE%u7F6E%u65AD%u70B9%uFF0C%20%u5408%u7406%u7684%u53BB%u5199%u76D1%u63A7%u8868%u8FBE%u5F0F%u3002%0A5.%20%u5BF9%u4E8E%u62FC%u5199%u9519%u8BEF%u3002%u6839%u636E%u4E2A%u4EBA%u7684%u7ECF%u9A8C%u3002%2080%25%u7684%u7A0B%u5E8F%u9519%u8BEF%u90FD%u662F%u7531%u4E8E%u62FC%u5199%u4EA7%u751F%u7684%u3002%u5C24%u5176%u662F%u5728%u5199%u52A8%u6001%u8BED%u8A00%u7684%u65F6%u5019%u3002%20%u5E94%u5BF9%u65B9%u5F0F%uFF1A%20%u4F60%u7684%u5F00%u53D1%u73AF%u5883%u80FD%u591F%u81EA%u52A8%u7684%u63D0%u793A%u4F60%u53D8%u91CF%u7684%u62FC%u5199%uFF0C%u7B49%u7B49%uFF0C%u6700%u597D%u5F53%u9009%u4E2D%u4E00%u4E2A%u53D8%u91CF%u540D%u7684%u65F6%u5019%uFF0C%20%u4E0A%u4E0B%u6587%u4E2D%u76F8%u540C%u7684%u53D8%u91CF%u540D%u90FD%u4F1A%u88AB%u63D0%u793A%u51FA%u6765%u8FD9%u662F%u6700%u7406%u60F3%u7684%u3002%20%u5F53%u7A0B%u5E8F%u51FA%u9519%u65F6%uFF0C%u53EF%u4EE5%u9010%u4E00%u68C0%u67E5%u53D8%u91CF%u540D%uFF0C%u91C7%u7528%u590D%u5236%u7C98%u8D34%u7684%u65B9%u6CD5%u4EE5%u786E%u4FDD%u62FC%u5199%u4E00%u81F4%uFF0C%20%u6709%u65F6%u5019%u7F3A%u4E00%u4E2A%u5B57%u6BCD%u6839%u672C%u770B%u4E0D%u51FA%u6765%u3002%uFF08%u5F53%u7136%u9759%u6001%u8BED%u8A00%u5728%u8FD9%u4E00%u70B9%u4E0A%u6709%u5929%u7136%u7684%u4F18%u52BF%u3002%u7F16%u8BD1%u8FC7%u7A0B%u4E2D%u7F16%u8BD1%u5668%u5DF2%u7ECF%u5E2E%u4F60%u6307%u51FA%u4E86%u5927%u90E8%u5206%u62FC%u5199%u9519%u8BEF%uFF09%20%20%0A6.%20%u4F7F%u7528**diff**%u5DE5%u5177%u3002%u5F53%u4F60%u9700%u8981%u77E5%u9053%u4E24%u4E2A%u770B%u7740%u4E00%u6A21%u4E00%u6837%u7684%u6587%u4EF6%u6216%u6587%u672C%u662F%u5426%u6709%u4E0D%u540C%uFF0C%20%u6709%u54EA%u4E9B%u4E0D%u540C%u7684%u65F6%u5019%uFF0C%20%60diff%60%20%u4F1A%u5E2E%u4F60%u5F88%u597D%u7684%u89E3%u51B3%u8FD9%u4E2A%u95EE%u9898%uFF0C%60diff%60%u662F%u4E00%u4E2Alinux%u547D%u4EE4%uFF0C%u5177%u4F53%u4F7F%u7528%20%60man%20diff%60%20%u67E5%u770B%0A7.%20%u5F53%u4F60%u5B9E%u5728%u6CA1%u6709%u529E%u6CD5%uFF0C%20%u4E0D%u77E5%u9053%u7A0B%u5E8F%u54EA%u51FA%u9519%u4E86%uFF0C%20%u5220%u6389%u73B0%u5728%u7684%u4EE3%u7801%u91CD%u5199%u4E00%u904D%u5427%uFF0C%u4E5F%u8BB8%u5C31%u662F%u7531%u4E00%u4E2A%u4F60%u5B9E%u5728%u770B%u4E0D%u51FA%u7684%u62FC%u5199%u9020%u6210%u7684%u3002%u5199%u7B2C%u4E8C%u904D%u7684%u65F6%u5019%u4E5F%u8BB8%u81EA%u7136%u5C31%u597D%u4E86%uFF0C%20%u6211%u9047%u5230%u8FC7%u5F88%u591A%u6B21%u8FD9%u79CD%u60C5%u51B5%0A%0A%0A%0A