pldbgapi
用于调试 PL/pgSQL 函数的服务器端支持
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pldebugger | 1.10 | LANG | Artistic-2.0 | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3050 | pldbgapi | 否 | 是 | 是 | 是 | 否 | 是 | - |
| 相关扩展 | plpgsql_check plprofiler plpgsql pgtap pg_stat_statements plv8 plperl plpython3u |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 1.10 | 1817161514 | pldebugger | - |
| RPM | PGDG | 1.10 | 1817161514 | pldebugger_$v | - |
| DEB | PGDG | 1.10 | 1817161514 | postgresql-$v-pldebugger | - |
安装
您可以直接安装 pldebugger 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:
pig repo add pgdg -u # 添加 PGDG 仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pldebugger; # 当前活跃 PG 版本安装
pig ext install -y pldebugger -v 18 # PG 18
pig ext install -y pldebugger -v 17 # PG 17
pig ext install -y pldebugger -v 16 # PG 16
pig ext install -y pldebugger -v 15 # PG 15
pig ext install -y pldebugger -v 14 # PG 14
dnf install -y pldebugger_18 # PG 18
dnf install -y pldebugger_17 # PG 17
dnf install -y pldebugger_16 # PG 16
dnf install -y pldebugger_15 # PG 15
dnf install -y pldebugger_14 # PG 14
apt install -y postgresql-18-pldebugger # PG 18
apt install -y postgresql-17-pldebugger # PG 17
apt install -y postgresql-16-pldebugger # PG 16
apt install -y postgresql-15-pldebugger # PG 15
apt install -y postgresql-14-pldebugger # PG 14
预加载配置:
shared_preload_libraries = '$libdir/plugin_debugger';
创建扩展:
CREATE EXTENSION pldbgapi;
用法
来源:repo README, v1.10 release, extension control
pldbgapi 为 PL/pgSQL 函数提供服务端 API,用于交互式调试。它通常通过 pgAdmin 这样的图形客户端使用。
CREATE EXTENSION pldbgapi;
使用 pgAdmin 调试
主要使用方式是通过 pgAdmin 图形界面:
- 直接调试:右键函数并选择“Debug”,即可立即执行并逐步调试。
- 全局断点:在函数上选择“Set Global Breakpoint”,然后等待另一个会话(例如 Web 应用)调用该函数;调试器会拦截该调用并允许在上下文中调试。
调试能力
通过调试客户端连接后,可以:
- 在 PL/pgSQL 函数的指定行上设置断点
- 逐行调试代码(步入、步过、步出)
- 在每一步检查变量及其当前值
- 查看嵌套函数调用的调用栈
- 继续执行到下一个断点
架构
调试系统包含三个组件:
- 图形客户端(pgAdmin):显示源码、变量和调用栈
- 目标后端:正在执行被调试 PL/pgSQL 代码的会话
- 调试代理:通过专用连接协调客户端和目标后端
支持语言
调试器适用于 PL/pgSQL 函数和过程。需要在每个需要调试的数据库中创建 pldbgapi 扩展。
注意事项
- 软件包名是
pldebugger,而 SQL 中创建的扩展是pldbgapi;目录跟踪的软件包版本为1.10,覆盖 PostgreSQL 14 到 18。 - v1.10 上游版本是 PostgreSQL 兼容性更新,没有记录新的用户侧 SQL API 或调试流程。
- 上游故障排查说明必须配置
shared_preload_libraries = '$libdir/plugin_debugger'并重启 PostgreSQL。缺失或错误的预加载会阻止全局断点,在某些平台上也会阻止pldbgapiSQL 加载。