使用pgAdmin调试PostgreSQL函数

Ken*_*han 65 postgresql debugging plpgsql pgadmin

我引用 来启用PostgreSQL服务器中的调试器,以便通过使用pgadmin单步调试plpgsql函数.

我已经设置shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll'postgresql.conf,运行pldbgapi.sql,并重新启动服务器.

这些步骤应该已成功运行并且plugin_debugger.dll应该成功加载,因为可以使用该命令进行验证show shared_preload_libraries,我可以在上下文菜单中看到调试选项,右键单击pgAdmin中的函数.

在此输入图像描述

选择"Debugging" - > Debug时,会弹出一个窗口,允许我输入输入参数的值.但在那之后,当我按下时OK,它根本没有响应.

在此输入图像描述

任何想法或我错过了服务器上的调试器设置?

我正在使用PostgreSQL 8.3和pgAdmin 1.14

Joe*_*l B 6

您必须在两个地方启用调试.在PGAdmin和数据库本身.你引用的那篇文章解释得很好,但也有一些细微差别.

pgAdmin的

更新postgresql.conf文件以加载调试库时,我在Windows上运行PGAdmin,因此文件位于:

C:\Program Files\PostgreSQL\9.4\data\postgresql.conf
Run Code Online (Sandbox Code Playgroud)

plugin_debugger.dll实际上是通向它的路径

$libdir/plugin_debugger.dll
Run Code Online (Sandbox Code Playgroud)

$libdir/plugins/plugin_debugger.dll
Run Code Online (Sandbox Code Playgroud)

如文章中所述.所以你postgresql.conf需要一条这样的线

shared_preload_libraries = '$libdir/plugin_debugger.dll'
Run Code Online (Sandbox Code Playgroud)

如果您有疑问,请搜索实际的.dll.如果你在Linux上,你将要找的文件是plugin_debugger.so.不要忘记更改postgresql.conf文件需要重新启动才能使更改生效.

PostgreSQL数据库

假设您在Linux服务器上运行PostgreSQL数据库,这个要点在解释如何下载依赖项以启用调试方面做得很好.确保在安装时以root身份运行.

容易遗漏的部分是针对您要调试的实际数据库发出命令.对于PostgreSQL上的新版本,您需要做的就是:

CREATE EXTENSION IF NOT EXISTS pldbgapi;
Run Code Online (Sandbox Code Playgroud)

如果这不会返回错误,那么你应该很高兴.

一些额外的注意事项:

  • 如上所述,您只能在作为超级用户帐户运行时进行调试
  • 他们的文档中,您只能调试pl/pgsql函数.因此,如果您的函数说明LANGUAGE cPGAdmin之类的内容在您选择函数时甚至不会显示右键单击Debug菜单选项.寻找具有的东西,LANGUAGE plpgsql并且Debug菜单应该显示.


LR1*_*567 2

肯,

您是否尝试过 pgAdmin 1.8 来排除 PgAdmin 1.14/ PostgreSQL 8.3 交互的问题。自从我使用 8.3 以来已经有一段时间了,对于我写的文章(您提到的),我正在使用 1.14/ PostgreSQL 9.1 进行测试,因此它很可能是与旧版本交互的问题。不幸的是我没有 8.3 可供测试了。

我依稀记得曾经遇到过这个问题,但那是当我的 postgresql.conf 中除了 pldebugger 之外还有另一个共享库时。不记得那是哪一个,但删除另一个共享库解决了我的问题。

希望其中一些建议有所帮助,雷吉娜