以交互方式观察python调试器pdb中的代码

时间:2014-03-19 16:15:47

标签: python debugging

是否可以在python调试器pdb中以交互方式逐行观察代码?

例如,在gdb中,可以按 ^ x + ^ a ,然后会显示代码窗口。

GDB Screenshot

我知道我可以使用list查看一些代码但是有gdb个选项吗?

1 个答案:

答案 0 :(得分:2)

不是开箱即用,但您可以在主目录的pdb.Pdb文件中添加.pdbrc命令子类的Cmd.preloop()Cmd.precmd()个挂钩,然后驱动一个文本编辑器显示文本。

这是PdbSublimeTextSupportPdbTextMateSupport软件包使用的方法。

这些包只是从Cmd子类读取当前位置;例如,self.stack[self.curindex]包含当前框架和行号。

PdbSublimeTextSupport

def launch(self):
    frame, lineno = self.stack[self.curindex]
    filename = self.canonic(frame.f_code.co_filename)
    if exists(filename):
        command = 'subl -b "%s:%d"' % (filename, lineno)
        os.system(command)

def preloop(self):
    launch(self)

def precmd(self, line):
    launch(self)
    return line

,Sublime Text编辑器在filename行打开lineno

您可以引用bdb documentation(构建PDB的基础)以及bdb.pypdb.py源代码,但上面的示例应足以驱动任何显示当前源代码行的方法。