Debugger¶
デバッガーを使用して、PostgreSQLのPL/pgSQLファンクション、EDBPostgresAdvancedServerのEDB-SPLファンクション、ストアドプロシージャ、およびパッケージをデバッグできます。デバッガーは、PostgreSQLインストールの拡張機能として利用でき、AdvancedServerの一部として配布されます。デバッガーを使用するには、スーパーユーザー特権が必要です。
デバッガーを使用する前に、 postgresql.conf ファイルを変更し、サーバーサイドデバッガーコンポーネントを shared_preload_libraries パラメーターの値に追加する必要があります。次に例を示します。
shared_preload_libraries='$libdir/plugin_debugger'
shared_preload_libraries パラメーターを変更した後、サーバーを再起動して変更を適用します。
デバッガーは、ターゲット関数またはプロシージャのコンテキストデバッグまたは直接デバッグのいずれかに使用できます。インコンテキストデバッグにデバッガーを使用する場合、プログラムの最初の行にブレークポイントを設定します。セッションがターゲットを呼び出すと、制御がデバッガーに転送されます。ダイレクトデバッグを使用する場合、デバッガーはターゲットに必要なパラメーターの入力を求め、コードをステップ実行できるようにします。
インコンテキストデバッグ¶
プログラムの1行目にブレークポイントを設定するには、デバッグするオブジェクトの名前を右クリックし、 Debugging サブメニューから Setbreakpoint を選択します。デバッガーウィンドウが開き、別のセッションがプログラムを呼び出すのを待ちます。
別のセッションがターゲットを呼び出すと、デバッガーにコードが表示され、ブレークポイントを追加したり、1行ずつステップ実行したりできます。他のセッションは、デバッグが完了するまで中断されます。その後、制御はセッションに戻ります。
ダイレクトデバッグ¶
直接デバッグにデバッガを使用するには、pgAdminツリーコントロールでデバッグするオブジェクトの名前を右クリックし、 Debugging サブメニューから Debug を選択します。デバッガーウィンドウが開き、プログラムに必要な値の入力を求められます。
Debugger ダイアログのフィールドを使用して、各パラメーターの値を指定します。
Name フィールドには、仮パラメーター名が含まれています。
Type フィールドには、パラメーターのデータ型が含まれています。
Null? チェックボックスをオンにして、パラメーターがNULL値であることを示します。
Valueフィールドに式が含まれる場合は、 Expression? チェックボックスをオンにします。
Value フィールドを使用して、プログラムに渡されるパラメーター値を提供します。パラメーター値を入力するときは、グリッド上の適切なセルに値を入力するか、セルを空のままにしてNULLを表すか、''(2つの一重引用符)を入力して空の文字列を表すか、2つだけで構成されるリテラル文字列を入力します一重引用符、/'/'を入力します。PostgreSQL8.4以降は、可変個引数関数パラメーターをサポートしています。これらは、値のコンマ区切りリストとして入力し、必要に応じて引用符で囲んだり、キャストしたりできます。
Usedefault? チェックボックスをオンにして、プログラムがDefaultValueフィールドの値を使用する必要があることを示します。
DefaultValue フィールドには、パラメーターのデフォルト値が含まれています。
プログラムに必要な値を入力し、 Debug ボタンをクリックしてプログラムのステップ実行を開始します。ここで指定された引数の値が保存されます。次にダイアログが開いたときに、値が事前に入力されます。値をクリアするには、 ClearAll ボタンを使用します。
デバッガーの使用¶
メインデバッガーウィンドウは、2つのパネルと状況依存のツールバーで構成されています。ツールバーアイコンを使用して、ブレークポイントを管理し、コードにステップインまたはステップスルーします。アイコンに関連付けられたオプションを識別するツールチップのアイコンにカーソルを合わせます。ツールバーのオプションは次のとおりです。
オプション |
アクション |
|---|---|
ステップイン |
ステップイン アイコンをクリックして、現在強調表示されているコード行を実行します。 |
ステップオーバー |
ステップオーバー アイコンをクリックしてコード行を実行し、コードによって呼び出されるサブファンクションをステップオーバーします。サブファンクションは実行されますが、ブレークポイントが含まれていない限りデバッグされません。 |
続行/開始 |
Continue/Start アイコンをクリックして強調表示されたコードを実行し、プログラムがブレークポイントに到達するか完了するまで続行します。 |
トグルブレークポイント |
トグルブレークポイント アイコンを使用して、ブレークポイントを有効または無効にします(ブレークポイントを削除せずに)。 |
すべてのブレークポイントをクリアする |
すべてのブレークポイントをクリア アイコンをクリックして、プログラムからすべてのブレークポイントを削除します。 |
ストップ |
Stop アイコンをクリックして、プログラムの実行を停止します。 |
ヘルプ |
Help アイコンをクリックして、デバッガーのドキュメントを開きます。 |
デバッガウィンドウの上部パネルには、プログラム本体が表示されます。行番号の横にある灰色の余白をクリックして、ブレークポイントを追加します。トップパネルで強調表示されている行は、実行しようとしている行です。
デバッガウィンドウの下部パネルには、プログラムに関する情報を確認できる一連のタブがあります。
[ パラメーター ]タブには、各パラメーターの値が表示されます。
ローカル 変数タブには、プログラム変数の現在の値が表示されます。
[ メッセージ ]タブには、サーバーから返されたメッセージ(エラー、警告、および情報メッセージ)が表示されます。
プログラムが完了すると、[ 結果 ]タブにサーバーメッセージが表示されます。
Stack タブには、呼び出されたがまだ完了していない関数のリストが表示されます。
プログラムをステップ実行すると、[ ローカル変数 ]タブに各変数の現在の値が表示されます。
サブルーチンにステップインすると、 スタック タブには、各呼び出し元の名前、各呼び出し元のパラメーター値(存在する場合)、および各呼び出し元内の行番号を含むコールスタックが表示されます。
呼び出し元を選択してそのスタックフレームにフォーカスを変更し、上部パネルに呼び出し元の状態を表示します。
プログラムが完了すると、[ 結果 ]タブにサーバーから返されたメッセージが表示されます。プログラムでエラーが発生した場合、 メッセージ タブに詳細が表示されます。