python中debug的几种方法对比
python中debug的几种方法对比
1.断点+单步调试
- 断点+单步调试是目前应用最广的debug方法
- 流程为:
- 在关键的代码位置加上print语句,通过分析print的值将范围缩小,这个过程可能需要重复多次。将范围缩小到一个比较完整的功能模块中
- 在可能出现bug的模块中的关键部分打上断点,进入到断点后使用单步调试,查看各变量的值是否正确,最后根据错误的变量值定位到具体的代码行,最后进行修改
2.pdb调试
- pdb是python自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb的调试流程和断点+单步调试基本差不多
3. PySnooper
- 该工具使用采用装饰器的形式,将函数的运行过程以日志的形式打印到文件中,其记录了运行了哪些代码行,运行的时间及运行到当前代码时各变量的值。根据变量的变化就可以定位问题了。亲自试用该工具后,其优点可总结为以下几点:
优缺点
优点 | 缺点 | |
---|---|---|
PySnooper | 无需为了查看变量的值,使用print打印变量的值,从而修改了原有的代码 | 无法很好的支持递归调用 |
接口的运行过程以日志的形式保存,方便随时查看 | 调用每个函数的中间结果只能保存在一个文件中,如果需要区分不同文件的结果,需要使用prefix来进行前缀标识 | |
可以根据需要,设置函数调用的函数的层数,方便将注意力集中在需要重点关注的代码段 | 对于跨文件函数调用,不支持记录调用函数所在的文件名 | |
多个函数的日志,可以设置日志前缀表示进行标识,方便查看时过滤 | ||
pdb | 需要在代码中添加print语句,这就改变了原有的代码 | |
在断点调试和单步调试过程中,需要保持持续的专注,一旦跳过了关键点就要从头开始 |
记录学习的点点滴滴