26.1. bdb —调试器框架

源代码: Lib/bdb.py


bdb模块处理基本的调试器Function,例如设置断点或pass调试器 Management 执行。

定义了以下异常:

bdb模块还定义了两个类:

断点pass编号passbpbynumber进行索引,而(file, line)对passbplist进行索引。前者指向类Breakpoint的单个实例。后者指向此类实例的列表,因为每行可能有多个断点。

创建断点时,其关联的文件名应采用规范形式。如果定义了* funcname *,则在执行该函数的第一行时将计算一个断点命中数。有条件的断点始终算命中。

Breakpoint个实例具有以下方法:

此类负责跟踪工具的详细信息。派生类应实现用户交互。标准调试器类(pdb.Pdb)是一个示例。

2.7 版的新Function:* skip *参数。

Bdb的以下方法通常不需要被覆盖。

默认实现取决于将要执行的事件类型(作为字符串传递)决定如何调度帧。 * event *可以是以下之一:

对于 Python 事件,将调用专用函数(请参见下文)。对于 C 事件,不采取任何措施。

有关跟踪Function的更多信息,请参见sys.settrace()的文档。有关代码和框架对象的更多信息,请参考标准类型层次结构

通常派生的类不会重写以下方法,但是如果要重新定义停止点和断点的定义,则可以。

派生类应重写这些方法,以控制调试器的操作。

此方法必须由派生类实现。

派生类和 Client 端可以调用以下方法来影响步进状态。

派生的类和 Client 端可以调用以下方法来操作断点。如果出现问题,这些方法将返回包含错误消息的字符串,如果一切正常,则返回None

派生的类和 Client 端可以调用以下方法来获取表示堆栈跟踪的数据结构。

Client 端可以调用以下两种方法来使用调试器调试以字符串形式给出的statement

最后,该模块定义了以下Function:

如果pass行号设置,它将检查b.line是否与也作为参数传递的帧中的_相同。如果断点是pass函数名设置的,则必须检查是否在正确的框架(正确的函数)中,以及是否在其第一行可执行文件中。

首页