在我的 Python 脚本的顶部,我定义了以下用于使用 ipdb 进行调试的便捷函数:
def bp():
import ipdb
ipdb.set_trace()
所以当我想调试某个点时我可以这样写:
bp()
不用写
import ipdb; ipdb.set_trace()
(除非需要,否则我不希望导入 ipdb)。
这种方法的问题在于,当我进入 pdb 时,我进入了函数 bp(),所以我必须按“u”键才能转到代码的相关部分:
> /path/to/script.py(15)bp()
14 import ipdb
---> 15 ipdb.set_trace()
16
ipdb> u
有没有一种方法我可以采用类似的方法,但直接进入代码的相关部分?
最佳答案
在调用 ipdb.set_trace() 定义的断点中更改事件帧的一种方法如下:
def bp():
import ipdb
import sys
ipdb.set_trace(sys._getframe().f_back)
对于具有简单重命名的 pdb,相同的方法似乎不起作用,但以下方法似乎有效:
def bp():
from pdb import Pdb
import sys
Pdb().set_trace(sys._getframe().f_back)
我在 python 3.5 中测试过这个,但在其他 python 版本中没有测试过。
关于python - 为在 Python 中使用 ipdb 进行调试而定义的便捷函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34920112/