pldbgapi

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

概览

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

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG1.101817161514pldebugger-
RPMPGDG1.101817161514pldebugger_$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 = '$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 函数的指定行上设置断点
  • 逐行调试代码(步入、步过、步出)
  • 在每一步检查变量及其当前值
  • 查看嵌套函数调用的调用栈
  • 继续执行到下一个断点

架构

调试系统包含三个组件:

  1. 图形客户端(pgAdmin):显示源码、变量和调用栈
  2. 目标后端:正在执行被调试 PL/pgSQL 代码的会话
  3. 调试代理:通过专用连接协调客户端和目标后端

支持语言

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

注意事项

  • 软件包名是 pldebugger,而 SQL 中创建的扩展是 pldbgapi;目录跟踪的软件包版本为 1.10,覆盖 PostgreSQL 14 到 18。
  • v1.10 上游版本是 PostgreSQL 兼容性更新,没有记录新的用户侧 SQL API 或调试流程。
  • 上游故障排查说明必须配置 shared_preload_libraries = '$libdir/plugin_debugger' 并重启 PostgreSQL。缺失或错误的预加载会阻止全局断点,在某些平台上也会阻止 pldbgapi SQL 加载。