Debugger

デバッガーページ

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

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

shared_preload_libraries='$libdir/plugin_debugger'

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

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

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

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

デバッガーがブレークポイントを設定するデモ

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

デバッガーのステップインデモ

ダイレクトデバッグ

直接デバッグにデバッガーを使用するには、pgAdminツリーコントロールでデバッグするオブジェクトの名前を右クリックし、 Debugging サブメニューから Debug を選択します。デバッガーウィンドウが開き、プログラムに必要な値の入力を求められます。

デバッガーパラメーターダイアログ

Debugger ダイアログのフィールドを使用して、各パラメーターの値を提供します。

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

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

  • Null? チェックボックスをチェックして、パラメーターがNULL値であることを示します。

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

  • Value フィールドを使用して、プログラムに渡されるパラメーター値を提供します。パラメーター値を入力するときは、グリッド上の適切なセルに値を入力するか、セルを空のままにしてNULLを表すか、`2つの一重引用符を入力して空の文字列を表すか、2つだけで構成されるリテラル文字列を入力します一重引用符で囲むには、/'/'と入力します。PostgreSQL8.4以降では、可変個引数ファンクションパラメーターをサポートしています。これらは、値のコンマ区切りリストとして入力でき、必要に応じて引用符および/またはキャストされます。

  • Usedefault? チェックボックスをチェックして、プログラムがDefaultValueフィールドの値を使用する必要があることを示します。

  • デフォルト値 フィールドには、パラメーターのデフォルト値が含まれています。

プログラムに必要な値を提供し、[ Debug ]ボタンをクリックしてプログラムのステップ実行を開始します。ここで指定された引数の値が保存されます。値は、次回ダイアログが開いたときに事前入力されます。値をクリアするには、 ClearAll ボタンを使用します。

デバッガーのステップインデモ

デバッガーを使用する

メインデバッガーウィンドウは、2つのパネルと状況依存のツールバーで構成されています。ツールバーアイコンを使用してブレークポイントを管理し、コードにステップインまたはステップスルーします。アイコンにカーソルを合わせると、アイコンに関連付けられているオプションを示すツールチップが表示されます。ツールバーオプションは次のとおりです。

デバッガーナビゲーションツールバー

オプション

アクション

ステップイン

Stepinto アイコンをクリックして、現在強調表示されているコード行を実行します。

ステップオーバー

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

続行/開始

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

ブレークポイントの切り替え

Toggleブレークポイント アイコンを使用して、ブレークポイントを削除せずにブレークポイントを有効または無効にします。

すべてのブレークポイントをクリアします

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

停止

Stop アイコンをクリックして、プログラムの実行を停止します。

ヘルプ

Help アイコンをクリックして、デバッガーのドキュメントを開きます。

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

デバッガーのメインウィンドウ

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

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

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

  • [ メッセージ ]タブには、サーバーから返されたメッセージエラー、警告、情報メッセージが表示されます。

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

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

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

デバッガーのローカル変数タブ

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

デバッガーのローカルスタックタブ

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

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

デバッガーのエラーメッセージ