E.40. pldebugger

E.40.1. 安装
E.40.2. 用法
E.40.3. 架构

LightDB pl/pgsql Debugger API。该模块是一组共享库,用于实现在 lightDB 13.8-23.2 及以上版本上调试 pl/pgsql 函数的API。

E.40.1. 安装

编辑 lightdb.conf 文件,修改 shared_preload_libraries 配置选项如下:

shared_preload_libraries = $libdir/plugin_debugger

  • plugin_debugger 必须是最后一个扩展名,否则调试可能无效。

  • 新启动 LightDB 以使新设置生效。

  • 在希望调试函数的数据库中运行以下命令: CREATE EXTENSION pldbgapi;

E.40.2. 用法

连接 navicat 到包含要调试函数的数据库。右键单击要调试的函数,选择 Debugging->Debug 以立即执行和调试函数,或选择 Debugging->Set Global Breakpoint 来在函数上设置断点。这将导致调试器等待另一个会话(例如为 Web 应用程序提供服务的后端)来执行函数,并允许在上下文中进行调试。有关更多信息,请参阅 navica 文档。

E.40.3. 架构

调试器由三部分组成:

  1. 客户端。通常是 GUI,显示源代码、当前堆栈帧、变量等,并允许用户设置断点和逐步调试代码。客户端可以驻留在与数据库服务器不同的主机上。

  2. 目标后端。这是运行被调试代码的后端。必须将 plugin_debugger.so 库加载到目标后端中。

  3. 调试代理。这是与客户端连接的另一个后端进程。在此后端中运行 pldbgapi.so 库中的 pldbg_* API 函数。客户端使用常规的 libpq 连接连接到调试代理。当调试会话处于活动状态时,代理通过套接字连接到目标。代理与目标后端之间的协议对其他人不可见,并且可能会发生更改。pldbg_* API 函数形成了调试设施的公共接口。

调试端 *------ libpq --------* 代理端
(navicat)
|
pldebugger socket 连接
|
*
应用端 *----- libpq -------* 目标端