通过 DBMS_DEBUG 系统包调试 PL 程序,需要至少两个数据库 session:一个是用于执行目标程序的 target session,另外一个是用于调试目标程序的 debug session。

    Target session 用于调试初始化会话,对会话进行标记,以便 PL interpreter 运行在调试模式下并生成调试事件。调试事件生成后,将从会话中发布。在大多数情况下,调试事件需要返回通知:interpreter 暂停并等待答复。

    同时,调试会话还必须使用 DBMS_DEBUG 进行自身初始化,用来了解它要监视哪个目标会话。之后,调试会话可以调用 DBMS_DEBUG 的入口点来读取从目标会话发布的事件并与目标会话进行通信。

    DBMS_DEBUG 不提供到 PL 编译器的接口,但是它依赖于编译器生成的调试信息。如果没有调试信息,就无法检查或修改参数或变量的值。

    使用以下语句之一(第二个语句为重新编译包或类型正文)可以为现有 PL 代码生成调试信息:

    Breakflags

    以下为 CONTINUE 的 参数值,这些标志可以组合在一起。

    Information Flags

    以下标识可以作为 参数传递给 、 和 。

    DBMS_DEBUG 子程序概览

    下表列出了 OceanBase 数据库当前版本所支持的 DBMS_DEBUG 子程序以及简要描述。