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

JDeveloperでは、単一のIDEツールでPL/SQLおよびJavaストアド・プロシージャのデバッグをサポートしています。PL/SQLをデバッグする場合、デバッグするソース・コードがOracleデータベースに格納されている必要があります。Javaストアド・プロシージャの場合、ソース・コードがJDeveloperプロジェクト内にあり、コンパイル済コードがデータベースにデプロイされる必要があります。

また、デバッグ処理の開始方法は、ローカル・デバッグとリモート・デバッグのどちらを実行するかで異なります。PL/SQLをデバッグする場合、開始方法の違いは次のとおりです。

PL/SQLおよびJavaストアド・プロシージャのデバッグ情報は、スマート・データ・ウィンドウ、データ・ウィンドウ、監視式ウィンドウ、インスペクタ・ウィンドウ、スタック・ウィンドウおよびクラス・ウィンドウなどの、様々なJDeveloperデバッガ・ウィンドウで表示されます。スレッド・ウィンドウ、ヒープ・ウィンドウおよびモニター・ウィンドウは、PL/SQLコードのデバッグ時には使用できません。デバッガが生成するデバッグ情報についての説明を表示するには、[F1]を押すか、デバッガ・ウィンドウで「ヘルプ」をクリックしてください。

PL/SQLをデバッグする場合、監視式ウィンドウおよびインスペクタ・ウィンドウでPL/SQL式を使用できます。また、mytable(i*10)のような表要素へのアクセスを含む条件付きブレークポイントも使用できます。この機能には、ファンクション、プロシージャ、パッケージおよびパッケージ本体で宣言された表も含まれます。

このトピックには、ローカルおよびリモートのPL/SQLプログラムとJavaストアド・プロシージャを、Oracleデータベースでデバッグする場合に適用される次のような情報が含まれます。

JDeveloperでデバッグ可能なPL/SQLオブジェクト

デバッグできるのは、PL/SQLをコールするPL/SQLプログラム、Javaストアド・プロシージャをコールするPL/SQL(Oracle9iリリース2のデータベースのみ)、およびトリガーを起動するSQL文を発行するPL/SQLプログラムです。

PL/SQLのデバッグは、次のオブジェクトから開始できます。

その他のPL/SQLオブジェクトは、前提条件を満たし、前述のいずれかから開始された場合のみ、トレースできます。

トリガー、Javaストアド・プロシージャおよびOracleオブジェクト型のデバッグについて

トリガー、Javaストアド・プロシージャおよびOracleオブジェクト型をデバッグする際には、次に点を考慮してください。

サポートされているOracleデータベースでのデバッグ情報の表示内容

Oracle9iリリース2以上のデータベースに存在するPL/SQLコードのデバッグでは、デバッガによって、データベースの新規JPDA(Java Platform Debugger Architecture)実装が使用されます。JPDAはJavaのデバッグの業界標準で、データベースでのJPDA実装は、JavaおよびPL/SQLのシームレスなデバッグを可能にします。Oracle8iまたはOracle9iリリース1のデータベースに存在するコードのデバッグでは、デバッガによって、異なるAPI(DBMS_DEBUGパッケージ)が使用されます。このAPIを使用した場合、デバッガ・ウィンドウには詳細な情報が表示されません。

PL/SQLコードからのデバッグ情報がJDeveloperデバッガ・ウィンドウでどのように表示されるかは、使用するデータベースのバージョンによって異なります。JDeveloperのコード・エディタでのPL/SQLコードの編集は、データベースのバージョンにかかわらず同じです。

Oracle8iまたはOracle9iリリース1とOracle9iリリース2のデータベースでのデバッグの違い

Oracle8iリリース8.1.7またはOracle9iリリース1のデータベースのデバッグとOracle9iリリース2のデータベースのデバッグの主な違いは次のとおりです。

既知の問題

次に、Oracle8iまたはOracle9iリリース1のデータベースに対するデバッグの際に発生する問題を示します。これらは古いAPIの制限であり、修正されません。

コンポジット・データ型

データ・ウィンドウ、監視式ウィンドウおよびインスペクタ・ウィンドウなどのJDeveloperのデータ関連ウィンドウでは、NUMBERVARCHAR2などのスカラー型である変数が表示できます。また、次のような複雑な型も表示されます。

CURSOR
表示される値により、フラグ、行カウントおよびknlフラグが示されます。
RECORD
デバッガはレコード全体を表示できません。ただし、監視式ウィンドウまたはインスペクタ・ウィンドウで式を入力し、レコードの指定のフィールドを参照できます。たとえば、my_rec.my_fieldのように入力します。
TABLE of <scalar>
デバッガにより、(Javaストアド・プロシージャでの配列の表示と類似した)フォルダが表示されます。フォルダを開くと、要素を参照できます。フォルダを右クリックし、「範囲の調整」を選択すると、フォルダを開いたときに表示されるインデックスの範囲を入力できます。デフォルトの範囲は1から100です。範囲に含まれるインデックスが多いほど(表内にインデックスの要素が存在しない場合でも)、フォルダを開くのに時間がかかります。
TABLE of <composite>
デバッガにより、(Javaストアド・プロシージャでの配列の表示と類似した)フォルダが表示されます。フォルダを開いても、デバッガによって要素が表示されない場合があります。これには表の表も含まれます。

その他の注意点


Javaプログラムのリモート・デバッグについて
デバッグ中のコード内の移動