你如何永久设置pdb中显示的行数?

时间:2014-07-31 21:22:44

标签: python pdb

我可以在运行时使用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)

1 个答案:

答案 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()