python中debug的几种方法对比

python中debug的几种方法对比

1.断点+单步调试

  • 断点+单步调试是目前应用最广的debug方法
  • 流程为:
    • 在关键的代码位置加上print语句,通过分析print的值将范围缩小,这个过程可能需要重复多次。将范围缩小到一个比较完整的功能模块中
    • 在可能出现bug的模块中的关键部分打上断点,进入到断点后使用单步调试,查看各变量的值是否正确,最后根据错误的变量值定位到具体的代码行,最后进行修改

2.pdb调试

  • pdb是python自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb的调试流程和断点+单步调试基本差不多

3. PySnooper

  • 该工具使用采用装饰器的形式,将函数的运行过程以日志的形式打印到文件中,其记录了运行了哪些代码行,运行的时间及运行到当前代码时各变量的值。根据变量的变化就可以定位问题了。亲自试用该工具后,其优点可总结为以下几点:

优缺点

优点 缺点
PySnooper 无需为了查看变量的值,使用print打印变量的值,从而修改了原有的代码 无法很好的支持递归调用
接口的运行过程以日志的形式保存,方便随时查看 调用每个函数的中间结果只能保存在一个文件中,如果需要区分不同文件的结果,需要使用prefix来进行前缀标识
可以根据需要,设置函数调用的函数的层数,方便将注意力集中在需要重点关注的代码段 对于跨文件函数调用,不支持记录调用函数所在的文件名
多个函数的日志,可以设置日志前缀表示进行标识,方便查看时过滤
pdb 需要在代码中添加print语句,这就改变了原有的代码
在断点调试和单步调试过程中,需要保持持续的专注,一旦跳过了关键点就要从头开始

参考于:https://mp.weixin.qq.com/s/uCvcuAlkUaKIEbV4jU1F2Q

posted @ 2023-02-24 08:57  小杨的冥想课  阅读(110)  评论(0编辑  收藏  举报