python - 在 python 调试器 pdb 中交互式地观察代码

标签 python debugging

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

例如,在 gdb 中,可以按 ^x + ^a 并弹出一个代码窗口。

GDB Screenshot

我知道我可以使用 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.pypdb.py源代码,但上面的例子应该足以驱动任何显示当前源代码行的方法。

关于python - 在 python 调试器 pdb 中交互式地观察代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22511912/

相关文章:

Python 作为根目录和/home 文件夹运行脚本

调试和跟踪 Hotjar 数据

c++ - 使用 dart::ffi 从 Dart 包中调试 C++ 代码

c++ - _CRTDBG_MAP_ALLOC 根本没有输出

python - 线程停止得太早

python:以通用方式获取嵌套字典的值

.net - 在外部触发 .NET 垃圾回收

c - opendir() 出现段错误?

python - 有没有办法迭代多个数据帧,将它们写入带有格式的多个 Excel 工作表?

python - 在 Django 中优化 Postgresql 数据库写入的性能?