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 を選択します。デバッガーウィンドウが開き、プログラムに必要な値の入力を求めます。
デバッガー ダイアログのフィールドを使用して、各パラメーターの値を指定します。
Name フィールドには、仮パラメーター名が含まれています。
Type フィールドには、パラメーターのデータ型が含まれています。
Null? チェックボックスをオンにして、パラメーターがNULL値であることを示します。
Valueフィールドに式が含まれる場合は、 Expression? チェックボックスをオンにします。
Value フィールドを使用して、プログラムに渡されるパラメーター値を指定します。パラメーター値を入力するときは、グリッドの適切なセルに値を入力するか、セルを空のままにしてNULLを表すか、「」(2つの一重引用符)を入力して空の文字列を表すか、2つのリテラル文字列を入力します一重引用符、/'/'を入力します。PostgreSQL8.4以降では、可変引数関数パラメーターがサポートされています。これらは、値のコンマ区切りリストとして入力し、必要に応じて引用符で囲んだり、キャストしたりできます。
[デフォルトを使用しますか?]チェックボックスをオンにして、プログラムが[デフォルト値]フィールドの値を使用することを示します。
デフォルト値 フィールドには、パラメーターのデフォルト値が含まれています。
プログラムに必要な値を指定し、[ Debug ]ボタンをクリックしてプログラムのステップ実行を開始します。ここで指定された引数の値が保存されます。次にダイアログが開いたときに、値が事前に入力されます。値をクリアするには、 ClearAll ボタンを使用します。
デバッガーの使用¶
デバッガーのメインウィンドウは、2つのパネルと状況依存のツールバーで構成されています。ツールバーアイコンを使用して、ブレークポイントを管理し、コードにステップインまたはステップスルーします。アイコンに関連付けられたオプションを識別するツールチップのアイコンにカーソルを合わせます。ツールバーのオプションは次のとおりです。
オプション |
アクション |
|---|---|
ステップイン |
ステップイン アイコンをクリックして、現在強調表示されているコード行を実行します。 |
ステップオーバー |
ステップオーバー アイコンをクリックしてコード行を実行し、コードによって呼び出されるサブファンクションをステップオーバーします。サブファンクションは実行されますが、ブレークポイントが含まれていない限りデバッグされません。 |
続行/開始 |
続行/スタート アイコンをクリックして強調表示されたコードを実行し、プログラムがブレークポイントに到達するか完了するまで続行します。 |
トグルブレークポイント |
トグルブレークポイント アイコンを使用して、ブレークポイントを有効または無効にします(ブレークポイントを削除せずに)。 |
すべてのブレークポイントをクリアする |
すべてのブレークポイントをクリア アイコンをクリックして、プログラムからすべてのブレークポイントを削除します。 |
ストップ |
Stop アイコンをクリックして、プログラムの実行を停止します。 |
ヘルプ |
ヘルプ アイコンをクリックして、デバッガーのドキュメントを開きます。 |
デバッガーウィンドウの上部パネルには、プログラム本体が表示されます。行番号の横にある灰色の余白をクリックして、ブレークポイントを追加します。上部パネルで強調表示されている行は、実行しようとしている行です。
デバッガーウィンドウの下部パネルには、プログラムに関する情報を確認できる一連のタブがあります。
[ パラメーター ]タブには、各パラメーターの値が表示されます。
[ ローカル ]変数タブには、プログラム変数の現在の値が表示されます。
[ メッセージ ]タブには、サーバーから返されたメッセージ(エラー、警告、および情報メッセージ)が表示されます。
プログラムが完了すると、[ 結果 ]タブにサーバーメッセージが表示されます。
[ スタック ]タブには、呼び出されたがまだ完了していない関数のリストが表示されます。
プログラムをステップ実行すると、[ ローカル変数 ]タブに各変数の現在の値が表示されます。
サブルーチンにステップインすると、[ スタック ]タブに、各呼び出し元の名前、各呼び出し元のパラメーター値(ある場合)、および各呼び出し元内の行番号を含むコールスタックが表示されます。
呼び出し元を選択してそのスタックフレームにフォーカスを変更し、上部パネルに呼び出し元の状態を表示します。
プログラムが完了すると、サーバーから返されたメッセージが[ 結果 ]タブに表示されます。プログラムでエラーが発生した場合、[ メッセージ ]タブに詳細が表示されます。