与Python调试器pdb交互式地监视代码

4
在Python调试器`pdb`中,是否可以交互地逐行查看代码执行?例如,在`gdb`中,可以按下“^x + ^a”,它会弹出一个代码窗口。我知道可以使用list命令来查看一些代码,但是否有类似于`gdb`的选项?
1个回答

2
不是开箱即用的,但是你可以在你的主目录下的一个`.pdbrc`文件中添加`pdb.Pdb`命令子类的`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文档(PDB构建的基石),以及bdb.pypdb.py源代码,但上述示例足以驱动几乎任何显示当前源代码行的方法。

好的,我有Sublime Text。谢谢你提供的信息。让我去看看 :) - Kartik Anand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接