PL/SQLプログラムのリモート・デバッグ

(PL/SQLのリモート・デバッグは、Oracle9iリリース2(9.2)のデータベースのみでサポートされています。)

PL/SQLプログラムのリモート・デバッグとローカル・デバッグの主な違いは、デバッグ・セッションの開始方法にあります。リモート・デバッグの場合、SQL*Plus、Dbms_Job、OCIプログラム、またはトリガー起動などのOracleクライアントでデバッグするプログラムを手動で起動する必要があります。その後、デバッグするデータベース・プログラム(デバッグ対象プロセス)からJDeveloperのデバッガへの接続を確立する必要があります。デバッグ対象プロセスが開始し、JDeveloperのデバッガがプロセスにアタッチされた後は、リモート・デバッグとローカル・デバッグの動作はよく似ています。

OracleデータベースでのPL/SQLプログラムおよびJavaストアド・プロシージャに対するデバッガの使用方法は、「PL/SQLプログラムおよびJavaストアド・プロシージャのデバッグについて」を参照してください。また、PL/SQLおよびJavaストアド・プロシージャのデバッグの前提条件が満たされていることを確認してください。

JDeveloperでPL/SQLプログラムをリモート・デバッグするには、次のようにします。

  1. (オプション)データベース接続がまだ作成されていない場合、接続ウィザードを使用してデータベース接続を作成します。
  2. (オプション)ワークスペースおよびプロジェクトがまだ作成されていない場合は、作成します。
  3. 「ツール」->「プロジェクト・プロパティ」 - 「デバッガ」 - 「リモート」を選択し、次のオプションを選択します。
    1. 「リモート・デバッグ」チェック・ボックス
    2. 「JPDAのリスニング」ラジオ・ボタン
    3. 「PL/SQLソース検索のためのデータベース接続」: PL/SQLコールをトレース実行する際にJDeveloperを有効にし、ソース・コードを検出するための適切なデータベース接続を選択します。
  4. ナビゲータで、「データベース」ノードを開き、特定のデータベース・ユーザー名およびスキーマ名を表示します。
  5. 「スキーマ」ノードを開きます。
  6. 「プロシージャ」「ファンクション」または「パッケージ本体」のうち、どれをデバッグするかに応じて、適切なノードを開きます。
  7. デバッグするプロシージャ、ファンクションまたはパッケージを選択し、ダブルクリックしてコード・エディタで開きます。
  8. コード・エディタでマージンを左クリックし、PL/SQLコードにブレークポイントを設定します。
  9. ナビゲータで適切な「プロジェクト」アイコン(project_icon)を選択し、「デバッグ」ツールバー・ボタン(debug_icon)をクリックします。
  10. 表示されたダイアログに適切なリスニング・ポート番号を入力し、「OK」をクリックします。別のプロセスで使用されていない、有効なポート番号から選択できます。この例で使用されているポート番号は4000です。

    注意:

  11. SQL*PlusなどのOracleクライアントを使用し、デバッガ接続コマンドを発行します。使用するクライアントにかかわらず、デバッガ接続コマンドを発行するセッションは、ブレークポイントが設定されたPL/SQLプログラムを実行するものと同じセッションであることが必要です。たとえば、SQL*Plusを使用する場合、JDWPセッション用に指定したマシンおよびポートへのTCP/IP接続を開くために、次のコマンドを発行します。

    EXEC DBMS_DEBUG_JDWP.CONNECT_TCP( '123.456.789.012', '4000' )

    ここで、123.456.789.012はJDeveloperが稼働しているIPアドレスおよびホスト名で、4000はデバッガがリスニングするポート番号です。

    これ以降は、ブレークポイントが設定されたPL/SQLへのコールを実行すると、JDeveloperのデバッガがアクティブになります。

  1. デバッガがデバッグの接続を受け入れる際に、新しいデバッグ・プロセスがRun Managerの「プロセス」フォルダで反映されます。また、ログ・ウィンドウに、次のようなメッセージが表示されます。

    Debugger accepted connection from remote process on port 4000.

    さらに、JDeveloperのレイアウトが、「編集」レイアウトから「デバッグ」レイアウトに切り替わります(ウィンドウの右下)。スタック・ウィンドウ、データ・ウィンドウおよび監視式ウィンドウなどのデバッグ・ウィンドウも表示されるようになります。

    Run Managerでは、パラボラアンテナ・アイコン(satellite_dish)により、ポートが継続してリスニング状態であり、複数のデバッグ接続を受け入れることができることが示されます。

  2. Oracleクライアントに戻り、ブレークポイントを設定したPL/SQLプログラム・ユニットを起動するコマンドを発行します。たとえば、SQL*Plusでは次のようなコマンドを発行します。

    EXEC FOO;
    ここでFOOはPL/SQLプロシージャの名前です。

  3. JDeveloperは、(プロジェクト・プロパティのデバッグの開始オプションで設定された場合は)最初のブレークポイントで実行を停止し、デバッガ・ウィンドウに状態を表示します。
  4. 必要に応じて、PL/SQLプロシージャのデバッグをトレース実行および再開します。「デバッグ中のコード内の移動」を参照してください。
  5. デバッグの完了時に、切断コマンドを使用してデバッグ対象プロセスを切断します。たとえば、SQL*Plusの場合は次のように入力します。

    EXEC DBMS_DEBUG_JDWP.DISCONNECT;

    次のメッセージが表示されます。

Debugger disconnected from remote process.

  1. リスニング・ポートを終了するには、Run Managerのパラボラアンテナ・アイコン(satellite_dish)を右クリックし、ポップアップ・メニューから「リスニングの停止」を選択します。

関連項目

PL/SQLプログラムのローカル・デバッグ
PL/SQLプログラムおよびJavaストアド・プロシージャのデバッグ

 

Copyright © 1997, 2004, Oracle. All rights reserved.