pldbgapi
用于调试 PL/pgSQL 函数的服务器端支持
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pldebugger | 1.9 | 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.9 | 1817161514 | pldebugger | - |
| RPM | PGDG | 1.9 | 1817161514 | pldebugger_$v | - |
| DEB | PGDG | 1.9 | 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;
用法
pldbgapi 提供了用于交互式调试 PL/pgSQL 函数的服务端 API。通常通过 pgAdmin 等图形界面客户端使用。
CREATE EXTENSION pldbgapi;
使用 pgAdmin 进行调试
使用调试器的主要方式是通过 pgAdmin 的图形界面:
- 直接调试:右键点击一个函数并选择"Debug",即可立即执行并逐步调试
- 全局断点:在某个函数上选择"Set Global Breakpoint",然后等待另一个会话(例如 Web 应用)调用该函数——调试器将拦截调用并允许在上下文中调试
调试功能
通过调试客户端连接后,你可以:
- 设置断点:在 PL/pgSQL 函数的特定行上设置断点
- 逐步执行:逐行执行代码(步入、步过、步出)
- 检查变量:查看每一步变量的当前值
- 查看调用栈:查看嵌套函数调用的调用栈
- 继续执行:执行到下一个断点
架构
调试系统由三个组件组成:
- 客户端 GUI(pgAdmin)——显示源代码、变量和调用栈
- 目标后端——执行被调试 PL/pgSQL 代码的会话
- 调试代理——通过专用连接在客户端和目标之间进行协调
支持的语言
调试器适用于 PL/pgSQL 函数和过程。需要在每个需要调试的数据库中创建 pldbgapi 扩展。