APP下载

Python 程式如何高效地除错?

消息来源:baojiabao.com 作者: 发布时间:2026-05-21

报价宝综合消息Python 程式如何高效地除错?

Python在debug方面的支援还是不错的,在明确程式码意义的情况下,通过log、print和assert分析错误原因,配合单元测试可以很高效。然而,实际工作中大量程式码很可能出自他人之手,这种情况下,使用debugger就显得更加高效了。

一、在控制台下进行程式除错

PDB

如果你熟悉命令列除错工具(例如gdb、lldb),那么使用Python中的PDB将获得非常好的体验,PDB不仅支援专案启动时进行呼叫,也支援在Python shell中互动式除错;功能上,支援断点、步进、异常捕获和解决、变数检视、变数改写、栈检视甚至字节码检视等。

举个PDB断点除错的例子:

用文字编辑器新建一个文件,就命名为debug1.py吧,输入最简单的Python程式码片段:

然后执行这个指令码,Windows下面这样执行 :

python debug1.py

然后执行到pdb.set_trace这句后会自动进入断点除错模式,屏幕会显示类似的资讯:

PDB显示目前的断点位置,然后你就可以使用PDB除错命令了。

Tips:其他常用命令有:

pp,打印

n,下一步,执行下一步

s,步进,一步步的执行

l,列出,显示断点周围的源代码

c,继续,继续程式的执行

r,返回,继续直到当前函式返回

由PDB引入的VIM、Emacs工具都能很好地实现类似lldb和gdb的效果。同时,结合IPython这一扩充套件功能shell,其中的魔法命令能够更好地帮助程式除错。这是一般*nix环境下常见的除错组合,配合配置良好的文字编辑工具都能实现不错的类IDE体验。PDB更能进行远端除错,即对远端(如服务器上正在执行着的Python程式码)进行除错。几乎所有的debugger工具都是在PDB的功能基础上进行使用者界面上的提升。

此外,对于部分框架,尤其是Web框架,进行除错往往需要结合具体的上下文环境(例如Django的开发除错测试需要上下文环境等),PDB互动式除错可以直接挂载在对应的互动环境中(如Django shell)。

Pudb

如果你觉得这样太原始,那么可以尝试pudb,它是基于控制台的debug图形化debugger工具,稍微比pdb直观一点,但仅可以在Linux下执行。

这个图形界面有点原始,不支援鼠标,所以不要用鼠标点。

二、图形界面下的程式除错

如果你更习惯于IDE的整体除错,也没有问题。很多支援Python的IDE,除错功能都十分强大,甚至轻量级编辑器也都具备完善的除错功能。接下来简单介绍几款图形化的IDE工具:

Visual Studio Code

VSC作为一个跨平台的重量级文字编辑器以及轻量级IDE,如今已经得到了越来越多开发者的喜爱,而Anaconda作为Python发行版整合环境,已将VSC作为推荐开发工具。

VSCode量级较轻,但只需要安装一个Python语言支援工具,摇身一变就能成为全功能Python IDE,智慧感知、补全、重构、查询定义程式码段等编辑功能一应俱全,而且除错功能也十分完整,能在除错模式中涵盖PDB的全部功能,并能在图形界面下简单地进行操作。

如果非要说一个VSCode的弱点的话,应该是其除错工具、直译器的配置没有具体的配置页面,需要通过配置档案来进行修改,这一点或许会给新手带来困惑。

Visual Studio

VS号称宇宙第一IDE,其Python开发工具自然也能带来非常好的体验。在VS2017中,Python开发环境就已经是可选择的安装选项了。对于许多曾经使用VS在Windows下进行其他语言开发工作的人而言,熟悉的快捷键、清晰的环境及不会特别夸张的资源消耗绝对是VS的加分点。

当然,其debugger功能也是一应俱全的。

Spyder

作为开源社群贡献的由Python编写的跨平台IDE,Spyder以轻量、便捷、高度整合为卖点。Spyder允许在多种不同的预设模式下工作,例如类似Matlab式的科学计算互动界面,以及其他应用工程开发形式的界面环境;在编码过程中Spyder可实时提示文件、互动式执行、除错时显示全部变量表,并可一键视觉化等,对于资料分析而言具有很好的便利性;同样,它也支援步进跟踪等一系列PDB所提供的除错功能。若是说缺点,界面本身不具时尚感,算吧?

Eclipse + PyDev

Eclipse是最辉煌的开源跨平台多语言IDE之一,有着大量使用者的簇拥,自然它也为Python提供了支援。PyDev是Eclipse上的Python开发工具包,提供完整IDE功能,也包含所述的断点、步进等除错功能,Eclipse + PyDev可能是最完整的开源Python IDE解决方案。

PyCharm

或许每一个Python开发者对于PyCharm都不陌生,作为目前最好用的Python IDE,PyCharm保持着一个季度一更新的版本迭代频率,每次更新都能带来功能上的惊喜,并且无论你是资料分析、应用开发者抑或是服务端开发,PyCharm都能提供最好的体验。它是最智慧的IDE,能够通过你引用的模组推断提醒你是否需要进入科学计算模式;能够解析程式码中存在的其它语言片段(如字串中的SQL、HTML、JS等);可以结合Jupyter Notebook进行开发和展示;能够通过程式码生成UML图,包含图形化的单元测试、覆盖率分析、效能分析工具和并行分析工具;能够远端除错、一键部署,能深入结合各种常见框架提供更好的支援;也能方便地进行图形化debug。

PyCharm的缺点?应该是在设定好直译器后,PyCharm将会对环境中所有的site-package进行解析和抽取,以供智慧感知自动补全使用,在这期间IDE对内存和CPU的占用都非常大,但如若您的电脑用一块高速SSD作为硬盘,同时又有足够大的内存,一切便会显得非常完美。

与Visual Studio类似,PyCharm是商业软件,虽然它也提供了免费的社群版,但相比之下,社群版的PyCharm受限的功能较多。不过,如果你还是一名学生,便可以利用自己的教育邮箱申请免费的教育版学生授权,体验与Pro版一致的全部功能。

2019-12-23 00:02:00

相关文章