javadtデバッガのリリース・ノート

Java Debug Interface (JDI)のデモとして、簡易なGUIデバッグ・ツールjavadtのソース・コードが用意されています。これは、JDIのサンプルおよびデモとして含まれています。完成されたデバッガではなく、実際のデバッグ作業に不可欠な多数の機能は付いていません。

javadtの呼出し

javadtは、次を実行することによって実行できます。

   java gui.GUI <options>.. <class-name>

この<class-name>は、通常javaコマンド行に配置する名前です。注: gui.GUIの呼出しに使用するクラス・パスには、JDIライブラリのパスとコンパイル済みのjavadtクラス・ファイルのパスが必要です。必ず、lib/tools.jarファイルもクラス・パスに設定してください。

たとえば、次のようにしてjavadtデバッガを呼び出すことができます。

   javadt gui.GUI -classpath . Hello
注: この-classpathオプションにより、Helloアプリケーションのクラス・パスが制御されます。ウィンドウが表示されたら、「run」コマンドを発行してすぐに実行できます。「run」コマンドにクラス名を指定することもできます。シェルからデバッガを呼び出すとき、クラス名は省略しても構いません。

クラス・パスは、デバッガ内部から、「classpath」コマンドを使用して設定することもできます。現在、デバッガを最初に呼び出す場合、シェル・コマンド行にVMのほかの引数を指定する必要があります。最近記述されたクラス・パス、VM引数、メイン・クラス名、およびプログラム引数は、その後の「run」および「load」コマンドのデフォルトとして保持されます。(残念ながら現時点では、同じデバッガの呼び出しから別のデバッグ・セッションを別のデバッグ対象プロセスで始めようとすると、デバッガはクラッシュする場合があります。シェルを終了してから新しいデバッガ・プロセスを起動してください。)

javadtの使用

javadtツールは通常、「現在のスレッド」に関連するコンテキストを表示します。現在のスレッドとは、最近ブレークポイントに遭遇したスレッド、キャッチされない例外をスローしたスレッド、あるいはユーザーがステップ実行したスレッドです。これらの3つのイベントのいずれかによりプログラム実行が中断された場合、現在のスレッドは存在し、javadtは次のような関連情報を表示します。

また、タブ付きペインで、次に示す3つの追加のビューのうちのいずれかを表示できます。

ソース・ファイルの名前をクリックすると、ソース・ビューを表示できます。また、スレッドをクリックすると、そのスレッドが現在のスレッドになります。これらの機能は通常、プログラムがブレークポイントなどで中断されているときに使用します。たとえば、スレッド再開後に別のブレークポイントに遭遇すると、現在のスレッドは自動的にリセットされ、表示が更新されます。javadt画面がタイリング表示されます。画面の大きさは調整できます。

javadt機能は基本的なもので、コマンド行インタラクション・ウィンドウも用意されています。このウィンドウからjavadtではまだ開示されていない関数にアクセスできます。特に、ブレークポイントの設定や変数の検証にはコマンド行の使用が必要になります。javadtデバッガ・コマンド・インタプリタは、jdbの機能のサブセットをほぼ実装していますが、さらに少数の独自コマンドも追加されています。「help」コマンドは、コマンドの完全セットとその機能を一覧表示します。もっとも一般的なコマンド・セットのショートカットは、画面上部のツールバーで提供されます。

デバッグするプログラムは、デバッガの子として起動できます。また、VMが接続を受け入れられる準備ができていれば、デバッガを既存のプロセスに接続することもできます。デバッガでデバッグ対象を子として起動した場合、アプリケーションのインタラクション・ペインに、標準入出力およびエラー・ストリームの行指向インタフェースが表示されます。

デバッガは、ソースパスでプログラムのソース・コードを検出し、「use」または「sourcepath」コマンドで設定するように想定されています。ソースパスが正しくないという理由でソースが表示されない場合、ソースパスはいつでも変更できます。その結果、ソースの表示はすぐに更新されます。

プログラムのステップ実行時には、「現在のスレッドがありません」というメッセージが頻繁に表示されます。このメッセージは、スレッドまたはVMが終了しているという意味ではなく、単に現在のスレッドが未定義であるという意味です。このような状況は、ステップ実行中のプログラムが入力などで待機しているとき、不意に発生しやすくなります。ステップ実行に成功した後と同様、VMが停止したように見えますが、これは「中断」ではなく「実行中」とみなされます。VMが中断すると、コマンド・インタラクション・ペインのプロンプトが、スレッド名とフレーム番号を変更することで状態を知らせます。プログラムの実行中は、「Command:」というプロンプトが表示されます。

javadtのソース

javadtの完全なソース・コードは、「Java SE Downloads」からダウンロード可能なJava SEのデモ・パッケージに含まれています。このパッケージを解凍すると、com/sun/tools/example/debugディレクトリでソースが見つかります。注: このディレクトリには、jdbのソースも含まれています。これらのサンプル・アプリケーションのソース・コードは、デバッガ開発者のために具体例を示すためのものです。デバッガの開発者によるコード例の使用、変更、再配布は、著作権表示の遵守を条件として認められます。

javadtは次のパッケージ(com/sun/tools/example/debugディレクトリにある)を使用します。

gui
ユーザー・インタフェース・コード
bdi
デバッガ・コア・コード
events
イベント・セット・コード
expr
式処理コード

javadtの構築

提供されたdebuggersディレクトリのソース・ファイルからjavadtクラスを構築する場合、必要な作業はソース・ファイルのコンパイルだけです。クラス・パスにJDIライブラリを含めること以外、特別なオプションは必要ありません。ただし、ファイルExpr.jjの表現パーサーを変更する場合は、JavaCCパーサー・ジェネレータが必要です。


Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.