是否可以在 python 调试器 pdb
中以交互方式逐行观察正在执行的代码?
例如,在 gdb
中,可以按 ^x + ^a 并弹出一个代码窗口。
我知道我可以使用 list
看到一些代码,但是是否有类似 gdb
的选项?
最佳答案
不是开箱即用的,但您可以添加 Cmd.preloop()
和 Cmd.precmd()
在主目录的 .pdbrc
文件中创建 pdb.Pdb
命令子类的钩子(Hook),然后驱动文本编辑器显示文本。
这是 PdbSublimeTextSupport 使用的方法和 PdbTextMateSupport包。
这些包只是从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 编辑器在 lineno
行打开 filename
。
您可以引用 bdb
documentation (构建 PDB 的基岩),以及 bdb.py
和 pdb.py
源代码,但上面的例子应该足以驱动任何显示当前源代码行的方法。
关于python - 在 python 调试器 pdb 中交互式地观察代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22511912/