我引用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
最佳答案
您必须在两个地方启用调试。在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
的内容,然后应显示“调试”菜单。 关于debugging - 使用pgAdmin调试PostgreSQL函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7865615/