pldbgapi
用于调试 PL/pgSQL 函数的服务器端支持
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pldebugger | 1.10 | LANG | Artistic | 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.9 | 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 = 'pldbgapi';
创建扩展:
CREATE EXTENSION pldbgapi;
用法
来源:repo README, v1.10 release, extension control
pldbgapi 为 PL/pgSQL 函数提供 server-side API,用于交互式调试。它通常通过 pgAdmin 这样的 GUI client 使用。
CREATE EXTENSION pldbgapi;
使用 pgAdmin 调试
主要使用方式是通过 pgAdmin 图形界面:
- Direct Debugging:右键函数并选择 “Debug”,即可立即执行并逐步调试。
- Global Breakpoints:在函数上选择 “Set Global Breakpoint”,然后等待另一个会话(例如 Web 应用)调用该函数;调试器会拦截该调用并允许上下文内调试。
调试能力
通过 debug client 连接后,你可以:
- 在 PL/pgSQL 函数的指定行上 Set breakpoints
- 逐行 Step through 代码(step into、step over、step out)
- 在每一步 Inspect variables 及其当前值
- 查看嵌套函数调用的 call stack
- Continue execution 到下一个断点
架构
调试系统包含三个组件:
- Client GUI(pgAdmin):显示源码、变量和 stack
- Target Backend:正在执行被调试 PL/pgSQL 代码的会话
- Debugging Proxy:通过专用连接在 client 和 target 之间协调
支持语言
调试器适用于 PL/pgSQL functions 和 procedures。需要在每个需要调试的数据库中创建 pldbgapi 扩展。
注意事项
- package 名是
pldebugger,而 SQL 中创建的 extension 是pldbgapi;catalog 跟踪 package version1.10,覆盖 PostgreSQL 14 到 18。 - v1.10 上游 release 是 PostgreSQL 兼容性更新,没有记录新的用户侧 SQL API 或调试流程。
- 上游 troubleshooting 说明必须配置
shared_preload_libraries = '$libdir/plugin_debugger'并重启 PostgreSQL。缺失或错误的 preload 会阻止 global breakpoints,在某些平台上也会阻止pldbgapiSQL 加载。