我可以在运行时使用l
在pdb中执行当前行之前和之后显示更多行,但是我们可以在脚本中或通过命令行选项永久执行此操作吗?
ywong:tmp ywong$ python tests.py
> /private/tmp/tests.py(23)<module>()
-> unittest.main()
(Pdb) l
18 self.assertEqual(1,1)
19
20 if __name__ == "__main__":
21 import pdb
22 pdb.set_trace()
23 -> unittest.main()
24 #unittest.main(testRunner=MyRunner)
[EOF]
(Pdb)
答案 0 :(得分:1)
您可以设置自己的函数,通过在调用pdb.Pdb
交互式提示符之前实例化list
对象并执行pdb
命令来创建自定义调试器。
您可以按如下方式创建自定义调试器调用函数:
import pdb, sys
def auto_list_debug():
# Create an instance of the Pdb class
my_pdb = pdb.Pdb()
my_pdb.reset()
# Execute your list command before invoking the interactive prompt
my_pdb.cmdqueue.append('l')
# Invoke the interactive prompt with the current frame
my_pdb.interaction(sys._getframe().f_back, None)
使用此功能代替pdb.set_trace()
for i in range(5):
auto_list_debug()