Debugging 使用pgAdmin调试PostgreSQL函数

Debugging 使用pgAdmin调试PostgreSQL函数,debugging,postgresql,plpgsql,pgadmin,Debugging,Postgresql,Plpgsql,Pgadmin,我指的是在PostgreSQL server中启用调试器,以便通过使用pgadmin单步执行代码来调试plpgsql函数 我已经在postgresql.conf中设置了shared\u preload\u libraries='$libdir/plugins/plugin\u debugger.dll',运行pldbgapi.sql,并重新启动了服务器 这些步骤应该已经成功运行,并且应该成功加载plugin\u debugger.dll,这可以通过使用命令show shared\u preloa

我指的是在PostgreSQL server中启用调试器,以便通过使用pgadmin单步执行代码来调试plpgsql函数

我已经在
postgresql.conf
中设置了
shared\u preload\u libraries='$libdir/plugins/plugin\u debugger.dll'
,运行
pldbgapi.sql
,并重新启动了服务器

这些步骤应该已经成功运行,并且应该成功加载
plugin\u debugger.dll
,这可以通过使用命令
show shared\u preload\u libraries
进行验证,我可以通过右键单击pgAdmin中的函数在上下文菜单中看到调试选项

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

在服务器上调试程序的设置中有什么想法或遗漏了什么吗

我正在使用PostgreSQL 8.3和pgAdmin 1.14

您是否尝试过pgAdmin 1.8来排除pgAdmin 1.14/PostgreSQL 8.3交互的问题。我已经有一段时间没有使用8.3了,在我写的文章中,您提到的是,我使用1.14/PostgreSQL 9.1进行测试,因此与旧版本的交互很可能是一个问题。不幸的是,我再也没有8.3可供测试了

我模模糊糊地记得您曾经遇到过一个问题,但那是在我的postgresql.conf中除了pldebugger之外还有另一个共享库的时候。不记得是哪一个,但删除另一个共享库修复了我的问题

希望这些建议能有所帮助, 里贾娜

我也有同样的问题。 确保在postgres.conf中加载的唯一共享库是调试器。 没有别的了。甚至连探查器都没有。
如果尝试调试函数时出现SSL错误,请重新连接到服务器。

您必须在两个位置启用调试。在PGAdmin和数据库本身上。你提到的那篇文章解释得很好,但有些细微差别

PGAdmin

当更新您的
postgresql.conf
文件以加载调试库时,我发现文件在这里:

C:\Program Files\PostgreSQL\9.4\data\postgresql.conf
plugin_debugger.dll
的路径实际上是

$libdir/plugin_debugger.dll
不是

如本条所述。因此,您的
postgresql.conf
需要这样一行代码

shared_preload_libraries = '$libdir/plugin_debugger.dll'
如果您有疑问,请搜索实际的.dll。如果你在Linux上,你要查找的文件是
plugin\u debugger.so
。不要忘记更改
postgresql.conf
文件需要重新启动才能使更改生效

PostgreSQL数据库

假设您正在Linux服务器上运行PostgreSQL数据库,那么在解释如何下载依赖项以启用调试方面做得非常好。确保安装时以root用户身份运行

容易忽略的部分是针对要调试的实际数据库发出命令。对于PostgreSQL上的较新版本,您只需执行以下操作:

CREATE EXTENSION IF NOT EXISTS pldbgapi;
如果没有返回错误,您应该可以继续

还有一些值得注意的事项:

  • 如上所述,您只能在作为超级用户帐户运行时进行调试
  • 从中,只能调试pl/pgsql函数。因此,如果您的函数显示类似于
    LANGUAGE c
    PGAdmin的内容,则在您选择该函数时,PGAdmin甚至不会显示右键单击调试菜单选项。查找具有
    语言plpgsql
    的内容,应该会显示调试菜单

+1问得好。但我不知道为什么失败了。如果没有发现任何问题,您可以随时将问题发送到pgAdmin支持列表:pgAdmin-support@postgresql.org(此处包含指向您的问题的链接)。请参阅。感谢Erwin提供的链接,我已经将问题发送给pgAdmin supportAnswer!!!你是作为超级用户运行的吗?根据你提到的网站,一个人需要是超级用户才能工作。是的,我是超级用户帐户。即使我使用由DefaultThank Regina创建的
postgres
帐户,也存在同样的问题。我尝试在PostgreSQL server 8.13.16中使用pgAdmin 1.14、1.12和1.8,但问题仍然存在。但在我办公室的PC机上,我尝试将pgAdmin 1.12与PostgreSQL server 8.13.5结合使用,效果非常好。如果我有空,我会尝试使用最新版本的PostgreSQL 9.1。我想知道是不是某种防病毒软件阻止了它。谢谢Regina的建议。但是我禁用了防病毒软件(Avira Antiviri)和窗口防火墙,但它仍然不起作用。
CREATE EXTENSION IF NOT EXISTS pldbgapi;