在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)
我在Python3.5中对此进行了测试,但在其他python版本中没有。
关于python - 在Python中使用ipdb调试定义的便捷功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34920112/