pdb调试方法有几种,你知道多少?
这篇文章给大家分享的是python代码调试的相关内容,这里主要介绍的是pdb调试方法,小编觉得挺实用的,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。
这里再带大家回顾一下两种 pdb 的调试入口,也是大部分所熟知的。
第一种:指定 -m pdb
来开启
$ python -m pdb pdb_demo.py
第二种:使用 pdb.set_trace()
在代码中设置断点
import pdb pdb.set_trace()
但其实,pdb 还另外两种调试方法,第一种方法,可能有 99% 的开发者都没用过,甚至连见过都没有。
这两种方法,是配合 Python Console 的交互界面来实现的。
首先我准备好一个名为 utils.py
的 Python文件,里面定义了一个 sum 的工具函数(仅作演示用)。
def sum(*args): result = 0 for arg in args: result += arg return result
然后在终端敲入 Python 进入 Console 的模式,导入这个模块,并调用 sum 函数,在正常情况下,函数可以正常工作。
> > > import utils > > > utils.sum(1,2,3) 6
但如果你的参数类型传成了 str,函数就会报错啦~
> > > utils.sum(1,2,"3") Traceback (most recent call last): File "stdin> ", line 1, in module> File "/Users/MING/utils.py", line 4, in sum result += arg TypeError: unsupported operand type(s) for +=: 'int' and 'str'
由于这里的报错是我刻意触发的,从报错来看,是很容易定位的。
但是在实际应用中,难免会遇到一些无法从报错信息直接判断 bug 所在的情况。
这个时候,如果可以在报错后,切换到 pdb 的调试模式就好了~
事实上,pdb 是支持这种用法的。
只要你在当前的会话中,导入 pdb,再执行 pdb.pm()
,就可以切换到熟悉的 pdb 调试界面,并在抛错的地方打上断点,然后你就可以任意的查看运行时的变量信息。
如果你不是想等报错了再调试,而是一开始就想进入调试模式,可以使用 pdb.runcall()
函数
有的同学可能还会想到 pdb.run()
和 pdb.runeval()
这两个函数,但这两种方法,是需要提前在函数调试断点的,这就比较麻烦了,一般情况下不推荐使用。
综上所述, pdb 调试方法主要有六种:
python -m pdb
:运行 python 文件时直接进入调试模式
pdb.set_trace()
:事先设置断点,然后直接运行 python 文件
pdb.run()
:事先设置断点,然后直接运行 python 模块
pdb.runeval()
:事先设置断点,然后直接运行 python 模块(与 pdb.run 类似)
pdb.pm()
:在 Console 模式下出错后直接切换到调试模式,并定位到报错位置。
pdb.runcall()
:可以在不设置断点的情况下,直接调试代码片段。
其中,pdb.pm()
是本文的重点,他虽然冷门,但却很好用,推荐给大家。
关于python代码调试的相关内容就介绍到这,现在大家对pdb调试应该都清楚了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多python代码调试的内容,大家可以关注其它的相关文章。
文本转载自脚本之家
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: pdb调试方法有几种,你知道多少?
本文地址: https://pptw.com/jishu/651470.html