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

JDeveloperでは、PL/SQLとJavaストアド・プロシージャのデバッグをどちらも1つのIDEツールでサポートしています。PL/SQLをデバッグする場合は、デバッグ対象のソース・コードがOracleデータベースに格納されている必要があります。Javaストアド・プロシージャの場合は、ソース・コードをJDeveloperプロジェクト内に置き、コンパイル後のコードをデータベースにデプロイする必要があります。

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

PL/SQLおよびJavaストアド・プロシージャのデバッグ情報は、「スマート・データ」、「データ」、「監視式」、「インスペクタ」、「スタック」および「クラス」など、各種のJDeveloperデバッガ・ウィンドウに表示されます。「スレッド」ウィンドウ、「ヒープ」ウィンドウおよび「モニター」ウィンドウは、PL/SQLコードのデバッグ時には利用できません。デバッガ・ウィンドウで[F1]を押すか「ヘルプ」をクリックすると、デバッガにより生成されるデバッグ情報に関する注意事項が表示されます。

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

このトピックでは、Oracleデータベースにおけるローカルおよびリモート両方のPL/SQLプログラムとJavaストアド・プロシージャのデバッグに該当する情報を示します。

JDeveloperでデバッグできるPL/SQLオブジェクト

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

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

他のPL/SQLオブジェクトも、前提条件を満たしており、前述のいずれかから起動されるPL/SQLオブジェクトであれば、すべてトレースできます。

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

トリガー、Javaストアド・プロシージャおよびOracleオブジェクト型のデバッグ時の考慮事項は、次のとおりです。

サポートされているOracleデータベース内のデバッグ情報の外観

Oracle9i リリース2以降のデータベースに常駐するPL/SQLコードをデバッグする場合、デバッガではデータベースの新規JPDA(Javaプラットフォーム・デバッガ・アーキテクチャ)実装を使用します。JPDAはJavaデバッグの業界標準であり、データベースのJPDA実装によりJavaとPL/SQLをシームレスにデバッグできます。Oracle8i またはOracle9i リリース1データベースに常駐するコードをデバッグする場合、デバッガでは異なるAPI(DBMS_DEBUGパッケージ)を使用します。このパッケージの場合、デバッガ・ウィンドウにはあまり詳細な情報が表示されません。

JDeveloperデバッガ・ウィンドウでは、PL/SQLコードからのデバッグ情報の表示状態がデータベースのバージョンに応じて異なります。ただし、JDeveloperのエディタでPL/SQLコードを編集する操作は、データベースのバージョンに関係なく同一です。

Oracle8iまたはOracle9i リリース1と、Oracle9i リリース2およびOracle10gデータベースにおけるデバッグの相違点

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

既知の問題

Oracle8i またはOracle9i リリース1データベースに対するデバッグ時には、次の問題が発生します。これらは、以前のAPIの制限事項であり、修正の予定はありません。

コンポジット・データ型

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

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

注意


関連項目

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