debugutils -调试实用程序

一小部分实用程序,可用于调试行为不佳的应用程序。目前这篇文章的重点是如何使用 pdb ,内置的Python调试器。

boltons.debugutils.pdb_on_exception(limit=100)[源代码]

安装一个处理程序,每当遇到未处理的异常时,该处理程序都会附加一个事后PDB控制台,而不是退出。

参数:

limit (int) -- 打印回溯时要显示的最大堆栈帧数量

使用以下命令可以从命令行获得类似的效果:

python -m pdb your_code.py

pdb_on_exception 允许您在应用程序内有条件地执行此操作。要恢复默认行为,只需执行以下操作::

sys.excepthook = sys.__excepthook__
boltons.debugutils.pdb_on_signal(signalnum=None)[源代码]

安装信号处理程序,用于 signalnum ,它缺省为 SIGINT ,或键盘中断/ctrl-c。此信号处理程序启动一个 pdb 断点。在并发系统中,结果会有所不同,但这种技术对于调试无限循环或轻松进入深层调用堆栈非常有用。

参数:

signalnum (int) -- 要用PDB处理的信号的信号号。默认为 signal.SIGINT ,见 signal 以获取更多信息。

boltons.debugutils.wrap_trace(obj, hook=<function trace_print_hook>, which=None, events=None, label=None)[源代码]

监视对象的交互。每当代码调用方法、获取属性或设置属性时,都会调用事件。默认情况下,会打印跟踪输出,但自定义跟踪 hook 才能过关。

参数:
  • obj (object) -- 要跟踪的新样式或旧样式对象。还支持列表和词典等内置对象。

  • hook (callable) -- 为每个事件调用一次的函数。详情见下文。

  • which (str) -- 要跟踪的一个或多个属性名称,或者接受属性名称和值并返回True/False的函数。

  • events (str) -- 要调用的一种或多种事件 hook 在……上面。期望值为 ['get', 'set', 'del', 'call', 'raise', 'return'] 。默认为所有事件。

  • label (str) -- 与被跟踪对象关联的名称缺省为十六进制内存地址,类似于REPR。

返回的对象与传入的对象不是同一个对象。它不会通过身份检查。然而,它会通过的 isinstance() 检查,因为它是传递的对象的新子类型的新实例。