我引用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 回答
您必须在两个地方启用调试 . 在PGAdmin和数据库本身 . 你引用的那篇文章解释得很好,但也有一些细微差别 .
PGAdmin
更新
postgresql.conf
文件以加载调试库时,我是running PGAdmin on Windows所以文件在这里:而
plugin_debugger.dll
的路径实际上就是这样不
如文章中所述 . 所以你的
postgresql.conf
需要这样一条线搜索实际的.dll如果你在Linux上找到你要查找的文件是
plugin_debugger.so
. 不要忘记更改postgresql.conf
文件将需要重新启动才能使更改生效 .PostgreSQL Database
假设您在Linux服务器上运行PostgreSQL数据库this gist在解释如何下载启用调试的依赖项方面做得非常出色 . 确保在安装时以root身份运行 .
容易遗漏的部分是针对您要调试的实际数据库发出命令 . 对于PostgreSQL上的新版本,您需要做的就是:
如果这不会返回错误,那么你应该很高兴 .
一些额外的注意事项:
如上所述,您只能在作为超级用户帐户运行时进行调试
从their docs您只能调试pl / pgsql函数 . 因此,如果您的函数显示类似
LANGUAGE c
PGAdmin,则在您选择该函数时甚至不会显示右键单击Debug菜单选项 . 查找具有LANGUAGE plpgsql
且调试菜单应显示的内容 .肯,
你有没有尝试过pgAdmin 1.8来排除PgAdmin 1.14 / PostgreSQL 8.3交互的问题 . 自从我使用8.3以来,已经有一段时间了 - 我所写的文章 - 你指的是我用1.14 / PostgreSQL 9.1进行测试,所以它很可能是与旧版本交互的问题 . 不幸的是,我再也没有8.3了 .
我依稀记得曾经遇到过这个问题,但是当我在postgresql.conf中有另一个共享库时,除了pldebugger之外 . 不记得是哪一个,但删除其他共享库修复了我的问题 .
里贾纳希望其中一些建议有所帮助
我有同样的问题 . 确保在postgres.conf中加载的唯一共享库是调试器 . 没有其他的 . 甚至不是剖析器 . 如果在尝试调试函数时遇到SSL错误,请重新连接到服务器 .