web-dev-qa-db-ja.com

pgAdminを使用してPostgreSQL関数をデバッグする

this を参照して、pgadminを使用してコードをステップ実行してplpgsql関数をデバッグするために、PostgreSQLサーバーでデバッガを有効にします。

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を使用しています

65
Ken Chan

2つの場所でデバッグを有効にする必要があります。 PGAdminおよびデータベース自体。あなたが参照したその記事はそれを説明する素晴らしい仕事をしますが、いくつかのニュアンスがありました。

PGAdmin

postgresql.confファイルを更新してデバッグライブラリをロードするとき、私は WindowsでPGAdminを実行 であったため、ファイルは次のようになりました。

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データベースを実行していると仮定します このGist は、デバッグを有効にするための依存関係をダウンロードする方法を説明するのに優れた仕事をします。インストール時にルートとして実行していることを確認してください。

見逃しやすいのは、デバッグする実際のデータベースに対してコマンドを発行することです。 PostgreSQLの新しいバージョンの場合、必要な作業は次のとおりです。

CREATE EXTENSION IF NOT EXISTS pldbgapi;

それがエラーを返さない場合、あなたは行ってもいいはずです。

その他の注意事項:

  • 上記のように、スーパーユーザーアカウントとして実行している場合にのみデバッグできます
  • their docs から、pl/pgsql関数のみをデバッグできます。したがって、関数がLANGUAGE cのようなメッセージを表示した場合、PGAdminは関数を選択したときに右クリックの[デバッグ]メニューオプションを表示しません。 LANGUAGE plpgsqlが含まれているものを探すと、[デバッグ]メニューが表示されます。
6
Joel B

ケン、

PgAdmin 1.14/PostgreSQL 8.3の相互作用の問題を除外するためにpgAdmin 1.8を試しましたか。 8.3を使用してからしばらく経ちましたが、筆者が言及している記事では、1.14/PostgreSQL 9.1でテストしていたため、古いバージョンとの相互作用の問題になる可能性があります。残念ながら、テストする8.3はもうありません。

私はあなたがかつて抱えていた問題を抱えていることを漠然と覚えていますが、それはpldebuggerに加えてpostgresql.confに別の共有ライブラリがあったときでした。どちらがあったか思い出せませんが、他の共有ライブラリを削除すると問題が解決しました。

これらの提案のいくつかが役立つことを願っています、レジーナ

2
LR1234567

同じ問題がありました。 postgres.confに読み込んでいるonly共有ライブラリがデバッガであることを確認してください。他に何もありません。プロファイラーでさえありません。関数をデバッグしようとしたときにSSLエラーが発生した場合は、サーバーに再接続してください。

1
foo