说起调试,相信大家都不陌生。如果你不是经常调试代码,说明代码 bug 比较少,或者错误比较直观,再或者就是你并没有体会到调试代码带来的诸多方便和好处。
虽然《代码大全(第 2 版)》提到“调试是确定错误根本原因并纠正此错误的过程。”,但是我认为调试还有帮助编写代码和阅读源码的功能。例如我们在做爬虫开发的时候,一边调试,一边解析网页编写相关代码,写起来可以说非常舒服。通过调试,我们还能准确了解代码的执行顺序,调用的方法等操作,一定程度上可以体会到代码编写者的用心。熟练对代码调试,可以提高我们的工作和学习效率。
我们应该都听说过 bug 一词的由来,第一台大型数字计算机的程序员在一次解决电路故障时,发现一只飞蛾飞到了计算机里面,从那以后计算机故障就被称为 bug。一般来说,调试都用在解决 bug 上,通过单步来跟踪问题位置。就《代码大全》一书而言,调试是在开发中迫不得已才使用的功能,只要保证在编写代码时符合规范,明确需求,调试的难度会降低甚至不需要调试。我认为这只是一种理想状态,毕竟编写的代码没有 bug 还是很难的,各种各样的未知情况都会发生。
代码出现 bug,如何调试?
用来调试的工具有很多,python 标准库内置 pdb,升级版 ipdb。如果使用 pycharm,更是有强大的调试工具。 这次主要介绍 ipdb 的使用,因为 ipdb 属于简单的命令行交互式调试,对于日常开发调试已经够用。如果需要更多功能,建议配合日志模块和使用 pycharm 来实现更多操作。
输入命令来安装 ipdb:
python3 -m pip install ipdb
安装好后有两种调试方式,