我引用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
3条答案
按热度按时间wwodge7n1#
你必须在两个地方启用调试。在PGAdmin和数据库本身。你引用的那篇文章做了很好的解释,但是有一些细微差别。
PG管理员
在更新
postgresql.conf
文件以加载调试库时,我是running PGAdmin on Windows,因此文件位于以下位置:到
plugin_debugger.dll
的路径实际上是不
如本文所述,因此
postgresql.conf
需要这样一行代码如果你不确定,可以搜索实际的.dll文件。如果你使用的是Linux,你要查找的文件是
plugin_debugger.so
。不要忘记,修改postgresql.conf
文件需要重启才能生效。PostgreSQL数据库
假设你在Linux服务器上运行PostgreSQL数据库,this gist在解释如何下载依赖项以启用调试方面做得很好。确保你在安装时以root用户身份运行。
最容易忽略的部分是对你想要调试的实际数据库发出命令。对于PostgreSQL的更新版本,你需要做的是:
如果这没有返回错误,您应该可以开始了。
一些其他注意事项:
LANGUAGE c
的内容,当你选择函数时,PGAdmin甚至不会显示右键单击Debug菜单选项。寻找具有LANGUAGE plpgsql
的内容,Debug菜单应该会显示。g6ll5ycj2#
肯
你试过pgAdmin 1.8来排除PgAdmin 1.14/ PostgreSQL 8.3交互的问题吗?我已经用了一段时间了,在我写的文章中--你提到的,我是用1.14/ PostgreSQL 9.1测试的,所以很可能是与旧版本交互的问题。不幸的是,我没有8.3可以测试了。
我依稀记得有一次你遇到过的问题,但那是当我的postgresql.conf中除了pldebugger还有另一个共享库时,不记得是哪一个了,但删除另一个共享库修复了我的问题。
希望这些建议能有所帮助瑞金娜
nhn9ugyo3#
我遇到了同样的问题。确保你在postgres.conf中加载的 * 唯一 * 共享库是调试器。没有别的。甚至是分析器。如果你在调试函数时遇到SSL错误,重新连接到服务器。