使用pgAdmin调试PostgreSQL函数

owfi6suc  于 2022-12-29  发布在  PostgreSQL
关注(0)|答案(3)|浏览(306)

我引用this来启用PostgreSQL服务器中的调试器,以便通过使用pgadmin逐步执行代码来调试plpgsql函数。
我已经在postgresql.conf中设置了shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll',运行了pldbgapi.sql,并重新启动了服务器。
这些步骤应该已经成功运行,并且plugin_debugger.dll应该成功加载,这可以通过使用命令show shared_preload_libraries来验证,并且我可以通过右键单击pgAdmin中的函数在上下文菜单中看到调试选项。

当选择“Debugging”--〉Debug时,会弹出一个窗口,允许我输入输入参数的值,但之后当我按OK时,它根本没有响应。

在服务器上设置调试器时,有什么想法吗?
我使用的是PostgreSQL 8.3和pgAdmin 1.14

wwodge7n

wwodge7n1#

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

PG管理员

在更新postgresql.conf文件以加载调试库时,我是running PGAdmin on Windows,因此文件位于以下位置:

C:\Program Files\PostgreSQL\9.4\data\postgresql.conf

plugin_debugger.dll的路径实际上是

$libdir/plugin_debugger.dll

$libdir/plugins/plugin_debugger.dll

如本文所述,因此postgresql.conf需要这样一行代码

shared_preload_libraries = '$libdir/plugin_debugger.dll'

如果你不确定,可以搜索实际的.dll文件。如果你使用的是Linux,你要查找的文件是plugin_debugger.so。不要忘记,修改postgresql.conf文件需要重启才能生效。

PostgreSQL数据库

假设你在Linux服务器上运行PostgreSQL数据库,this gist在解释如何下载依赖项以启用调试方面做得很好。确保你在安装时以root用户身份运行。
最容易忽略的部分是对你想要调试的实际数据库发出命令。对于PostgreSQL的更新版本,你需要做的是:

CREATE EXTENSION IF NOT EXISTS pldbgapi;

如果这没有返回错误,您应该可以开始了。
一些其他注意事项:

  • 如上所述,您只能在以超级用户帐户运行时进行调试
  • their docs中,你只能调试pl/pgsql函数。因此,如果你的函数显示类似LANGUAGE c的内容,当你选择函数时,PGAdmin甚至不会显示右键单击Debug菜单选项。寻找具有LANGUAGE plpgsql的内容,Debug菜单应该会显示。
g6ll5ycj

g6ll5ycj2#


你试过pgAdmin 1.8来排除PgAdmin 1.14/ PostgreSQL 8.3交互的问题吗?我已经用了一段时间了,在我写的文章中--你提到的,我是用1.14/ PostgreSQL 9.1测试的,所以很可能是与旧版本交互的问题。不幸的是,我没有8.3可以测试了。
我依稀记得有一次你遇到过的问题,但那是当我的postgresql.conf中除了pldebugger还有另一个共享库时,不记得是哪一个了,但删除另一个共享库修复了我的问题。
希望这些建议能有所帮助瑞金娜

nhn9ugyo

nhn9ugyo3#

我遇到了同样的问题。确保你在postgres.conf中加载的 * 唯一 * 共享库是调试器。没有别的。甚至是分析器。如果你在调试函数时遇到SSL错误,重新连接到服务器。

相关问题