Отладка функции PostgreSQL с использованием pgAdmin - PullRequest
65 голосов
/ 23 октября 2011

Я ссылаюсь на , чтобы включить отладчик на сервере PostgreSQL для отладки функции plpgsql путем пошагового выполнения кодов с помощью pgadmin.

Я уже установил shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll' в postgresql.conf, запустил pldbgapi.sql и перезапустил сервер.

Эти шаги должны были быть успешно выполнены, а plugin_debugger.dll должен быть успешно загружен, что можно проверить с помощью команды show shared_preload_libraries, и я вижу опцию отладки в контекстном меню, щелкнув правой кнопкой мыши функцию в pgAdmin. ,

enter image description here

При выборе «Отладка» -> «Отладка» появляется окно, позволяющее мне ввести значения для входных параметров. Но после этого, когда я нажимаю OK, он вообще не отвечает.

enter image description here

Есть идеи или я что-то упустил в настройке отладчика на сервере ??

Я использую PostgreSQL 8.3 и pgAdmin 1.14

Ответы [ 3 ]

6 голосов
/ 22 января 2016

Вы должны включить отладку в двух местах.На PGAdmin и на самой базе данных.Та статья, на которую вы ссылались, прекрасно объясняет это, но есть некоторые нюансы.

PGAdmin

При обновлении файла postgresql.conf для загрузки библиотеки отладки я был работает PGAdmin в 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

Предполагается, что вы используете базу данных PostgreSQLна сервере Linux эта сущность отлично объясняет, как загрузить зависимости для включения отладки.При установке убедитесь, что вы работаете с правами суперпользователя.

Часть, которую легко пропустить, - это ввод команды для фактической базы данных, которую вы хотите отладить.Для более новых версий PostgreSQL все, что вам нужно сделать, это:

CREATE EXTENSION IF NOT EXISTS pldbgapi;

Если это не возвращает ошибку, вам стоит поработать.

Некоторые дополнительные вещипримечание:

  • Как уже упоминалось выше, отладку можно выполнять только при работе с учетной записью суперпользователя
  • Из их документов можно выполнять только отладку функций pl / pgsql.Так что если ваша функция говорит что-то вроде * 1048, то PGAdmin даже не отобразит опцию меню «Отладка» при щелчке правой кнопкой мыши при выборе функции.Найдите что-то с LANGUAGE plpgsql, и должно отобразиться меню отладки.
2 голосов
/ 02 января 2012

Кен,

Вы пробовали использовать pgAdmin 1.8, чтобы исключить проблему с взаимодействием PgAdmin 1.14 / PostgreSQL 8.3.Прошло довольно много времени с тех пор, как я использовал 8.3, и для статьи, которую я написал - на которую вы ссылаетесь, я тестировал с 1.14 / PostgreSQL 9.1, поэтому вполне может возникнуть проблема с взаимодействием со старой версией.К сожалению, у меня больше нет 8.3 для тестирования.

Я смутно помню, что у вас была проблема, однажды, но это было, когда у меня была другая общая библиотека в моем postgresql.conf в дополнение к pldebugger.Не могу вспомнить, что это было, но удаление другой общей библиотеки устранило мою проблему.

Надеюсь, что некоторые из этих предложений помогут, Регина

1 голос
/ 03 февраля 2012

У меня была такая же проблема.Убедитесь, что отладочная библиотека only , которую вы загружаете в postgres.conf, является отладчиком.Ничего больше.Даже не профилировщик.Если при попытке отладки функции вы получили ошибку SSL, переподключитесь к серверу.

...