我引用this来启用PostgreSQL服务器中的调试器,以便通过使用pgadmin单步调试plpgsql函数。
我已在shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll'
中设置postgresql.conf
,运行pldbgapi.sql
,然后重新启动服务器。
这些步骤应该已经成功运行并且plugin_debugger.dll
应该成功加载,因为可以使用命令show shared_preload_libraries
进行验证,我可以在右键单击上下文菜单中看到调试选项pgAdmin中的一个函数。
选择“调试”时 - >调试,弹出一个窗口,允许我输入输入参数的值。但在那之后,当我按OK
时,它根本没有回复。
任何想法或我在服务器上的调试器设置中遗漏了什么?
我正在使用PostgreSQL 8.3和pgAdmin 1.14
答案 0 :(得分:6)
您必须在两个地方启用调试。在PGAdmin和数据库本身。你引用的那篇文章做了很好的解释,但有一些细微差别。
<强> pgAdmin的强>
更新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;
如果这不会返回错误,那么你应该好好去。
还有一些值得注意的事项:
LANGUAGE c
PGAdmin的内容,则在您选择该函数时甚至会显示右键单击“调试”菜单选项。查找具有LANGUAGE plpgsql
且调试菜单应显示的内容。答案 1 :(得分:2)
肯
您是否尝试过pgAdmin 1.8以排除PgAdmin 1.14 / PostgreSQL 8.3交互的问题。自从我使用8.3以来,已经有一段时间了 - 我所写的文章 - 你指的是我用1.14 / PostgreSQL 9.1进行测试,所以很可能是与旧版本交互的问题。不幸的是,我再也没有8.3了。
我依稀记得曾经遇到过这个问题,但是当我在postgresql.conf中有另一个共享库时,除了pldebugger之外。不记得是哪一个,但删除其他共享库修复了我的问题。
希望其中一些建议有所帮助, 伊利
答案 2 :(得分:1)
我遇到了同样的问题。 确保在postgres.conf中加载的 only 共享库是调试器。 没有其他的。甚至不是剖析器。 如果在尝试调试函数时遇到SSL错误,请重新连接到服务器。