暗无天日

=============>DarkSun的个人博客

用 .pdbrc 自定义 Python 调试器

今天才知道 Python 调试器 PDB 可以通过 ~/.pdbrc 文件自定义——在文件里定义 alias,就能在调试时直接调用。

.pdbrc 的格式要求如下:

Trey Hunner 在他的文章中分享了一套实用的 alias 配置:

# dir obj: 打印非双下划线的属性和方法
alias dir print(*(f"%1.{n} = {v!r}" for n, v in __import__('inspect').getmembers(%1) if not n.startswith("__")), sep="\n")

# attrs obj: 只打印非方法的数据属性
alias attrs import inspect as __i ;; print(*(f"%1.{n} = {v!r}" for n, v in __i.getmembers(%1, lambda v: not __i.isroutine(v)) if not n.startswith("__")), sep="\n") ;; del __i

# vars obj: 只打印实例变量(要求对象有 __dict__)
alias vars print(*(f"%1.{k} = {v!r}" for k, v in vars(%1).items()), sep="\n")

# src obj: 打印类/函数的源文件、行号和代码
alias src import inspect as __i;; print(f"{__i.getsourcefile(%1)} on line {__i.getsourcelines(%1)[1]}:\n{''.join(__i.getsource(%1))}") ;; del __i

# loc: 打印当前帧的局部变量
alias loc print(*(f"{name} = {value!r}" for name, value in vars().items() if not name.startswith("__")), sep="\n")

这 5 个 alias 的效果:

python : pdb : debugging