PL debugger#

Debugger page - Parameters tab

Debugger page - Parameters tab#

デバッガーを使用して、 PostgreSQLのPL/pgSQLファンクション、EDB-SPLファンクション、ストアドプロシージャ、およびEDB Postgres Advanced Serverのパッケージをデバッグできます。デバッガーは、 PostgreSQLインストールの拡張機能として利用でき、 EDB Postgres Advanced Serverの一部として配布されます。デバッガーを使用するにはスーパーユーザー権限が必要です。

デバッガーを使用する前に、 postgresql.conf ファイルを変更し、サーバーサイドのデバッガーコンポーネントをshared_preload_libraries パラメーターの値に追加します。

shared_preload_libraries =\$libdir/`other_libraries`/plugin_debugger\

shared_preload_libraries パラメーターを変更した後、サーバーを再起動して変更を適用します。

デバッガーは、ターゲットファンクションまたはプロシージャのインコンテキストデバッグまたは直接デバッグに使用できます。インコンテキストデバッグにデバッガーを使用する場合、プログラムの最初の行にブレークポイントを設定します。セッションがターゲットを呼び出すと、制御がデバッガーに転送されます。ダイレクトデバッグを使用する場合、デバッガーは、ターゲットに必要なパラメーターの入力を求め、コードをステップ実行できます。

インコンテキストデバッグ#

プログラムの最初の行にブレークポイントを設定するには、デバッグするオブジェクトの名前を右クリックし、 Debugging > Set Breakpoint を選択します。 デバッガーウィンドウが開き、別のセッションがプログラムを呼び出すのを待機します。

別のセッションがターゲットを呼び出すと、デバッガーにコードが表示され、ブレークポイントを追加したり、行ごとにステップスルーしたりできます。他のセッションは、デバッグが完了するまで一時停止されます。次に、制御はセッションに返されます。

Debugger page - Stack tab

Debugger page - Stack tab#

ダイレクトデバッグ#

直接デバッグにデバッガーを使用するには、ブラウザツリーコントロールで、デバッグするオブジェクトの名前を右クリックし、 Debugging > Debug を選択します。

[デバッガー]ダイアログボックスのフィールドを使用して、各パラメーターの値を提供します。

  • Name フィールドには、正式なパラメーター名が表示されます。

  • Type フィールドには、パラメーターのデータ型が含まれます。

  • パラメーターがNULL値の場合、 Null? チェックボックスを選択します。

  • Value ボックスに式が含まれる場合、 Expression? チェックボックスをオンにします。

  • Value ボックスに、プログラムに渡すパラメーター値を入力します。パラメーター値を入力するときに、次のことができます。

    • グリッド上の適切なセルに値を入力します。

    • セルを空のままにして、NULLを表します。

    • 2つの一重引用符''を入力して、空の文字列を表します。

    • 2つの一重引用符''だけで構成されるリテラル文字列。

    • PostgreSQL 8.4以降では、可変個引数ファンクションパラメーターをサポートしています。これらはコンマ区切りの値のリストとして入力でき、必要に応じて引用符またはキャストできます。

  • プログラムで Default Value ボックスの値を使用する場合、 Usedefault? チェックボックスを選択します。

  • Default Value ボックスには、パラメーターのデフォルト値が表示されます。

プログラムに必要な値を入力したら、 Debug を選択してプログラムのステップ実行を開始します。

Debugger page - Stack tab

Debugger page - Stack tab#

選択した値は保存され、次回ダイアログボックスを開くときに表示されます。値をクリアするには、 Clear All を選択します。

デバッガーを使用する#

メインデバッガーウィンドウは、2つのパネルと状況依存のツールバーで構成されています。ツールバーアイコンを使用してブレークポイントを管理し、コードにステップインまたはステップスルーします。

Icon

Action

Step into

現在強調表示されているコード行を実行します。

Step over

コード行を実行し、コードによって呼び出されるサブファンクションをステップオーバーします。サブファンクションは実行されますが、ブレークポイントが含まれていない限りデバッグされません。

Continue/Start

強調表示されたコードを実行し、プログラムがブレークポイントに遭遇するか完了するまで続行します。

Toggle breakpoint

ブレークポイントを削除せずにブレークポイントを有効または無効にします。

Clear all breakpoints

プログラムからすべてのブレークポイントを削除します。

Stop

プログラムの実行を停止します。

デバッガーウィンドウの上部パネルには、プログラム本体が表示されます。行番号の横にある灰色の余白をクリックして、ブレークポイントを追加します。上部パネルの強調表示された行は、これから実行される行です。

Debugger main page

Debugger main page#

デバッガーウィンドウの下部パネルには、プログラムに関する情報を確認できるタブのセットが提供されます。

  • Parameters タブには、各パラメーターの値が表示されます。

  • ローカル 変数タブには、プログラム変数の現在値が表示されます。

  • Messages タブには、サーバーから返されたメッセージが表示されます。

  • Results タブには、プログラムが完了するとサーバーメッセージが表示されます。

  • Stack タブには、呼び出されたがまだ完了していないファンクションのリストが表示されます。

プログラムをステップ実行すると、 ローカル変数 タブに各変数の現在値が表示されます。

Debugger page - Local variables tab

Debugger page - Local variables tab#

サブルーチンにステップインすると、 Stack タブに、各呼び出し元の名前、各呼び出し元のパラメーター値存在する場合、各呼び出し元内の行番号を含むコールスタックが表示されます。

Debugger page - Stack tab

Debugger page - Stack tab#

呼び出し元を選択してフォーカスをそのスタックフレームに変更し、上部のパネルに呼び出し元の状態を表示します。

プログラムが完了すると、[ Results ]タブにサーバーから返されたメッセージが表示されます。プログラムでエラーが発生した場合、[ Messages ]タブに詳細が表示されます。

!!!note ENABLE_DEBUGGER 構成オプションがfalseに設定されている場合、デバッガーは無効になっています。 !!!