pldbgapi

用于调试 PL/pgSQL 函数的服务器端支持

概览

扩展包名版本分类许可证语言
pldebugger1.10LANGArtisticC
ID扩展名BinLibLoadCreateTrustReloc模式
3050pldbgapi-
相关扩展plpgsql_check plprofiler plpgsql pgtap pg_stat_statements plv8 plperl plpython3u

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG1.101817161514pldebugger-
RPMPGDG1.91817161514pldebugger_$v-
DEBPGDG1.101817161514postgresql-$v-pldebugger-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
u22.x86_64
u22.aarch64
u24.x86_64
u24.aarch64
u26.x86_64
u26.aarch64

安装

您可以直接安装 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 到下一个断点

架构

调试系统包含三个组件:

  1. Client GUI(pgAdmin):显示源码、变量和 stack
  2. Target Backend:正在执行被调试 PL/pgSQL 代码的会话
  3. Debugging Proxy:通过专用连接在 client 和 target 之间协调

支持语言

调试器适用于 PL/pgSQL functions 和 procedures。需要在每个需要调试的数据库中创建 pldbgapi 扩展。

注意事项

  • package 名是 pldebugger,而 SQL 中创建的 extension 是 pldbgapi;catalog 跟踪 package version 1.10,覆盖 PostgreSQL 14 到 18。
  • v1.10 上游 release 是 PostgreSQL 兼容性更新,没有记录新的用户侧 SQL API 或调试流程。
  • 上游 troubleshooting 说明必须配置 shared_preload_libraries = '$libdir/plugin_debugger' 并重启 PostgreSQL。缺失或错误的 preload 会阻止 global breakpoints,在某些平台上也会阻止 pldbgapi SQL 加载。

最后修改 2026-05-18: routine extension update (ac43610)