|
JavaTM Platform Debugger Architecture |
ホームページ |
コンポーネント デバッガインタフェース
/ |--------------|
/ | VM |
debuggee ----( |--------------| <------- JVMDI - Java VM Debug Interface
¥ | バックエンド |
¥ |--------------|
/ |
通信チャネル -( | <--------------- JDWP - Java Debug Wire Protocol
¥ |
|--------------|
| フロントエンド |
|--------------| <------- JDI - Java Debug Interface
| UI |
|--------------|
JPDA は、次の 3 つの階層で構成されます。
デバッガの中には、より低い層である JDWP (フロントエンドが Java で記述されていない場合) や JVMDI (低レベルの機能を必要とする特殊なデバッガの場合) の上に構築されるものもあります。
このデバッガのアーキテクチャは、さまざまな VM 実装で使用できるように設計されています。
この VM では、Java Virtual Machine Debug Interface (JVMDI) が実装されます。
Java で記述されたデバッガサポートコードを debuggee 上で実行した場合、debuggee との競合が発生し、ハングアップおよびその他の予期しない動作をする可能性があります。 このため、バックエンドはネイティブコードで記述されており、 JVMDI は純粋なネイティブインタフェースになっています。
これらの UI の例は、Java Debug Interface (JDI) のクライアントになっています。
デバッグのために VM から提供する必要のあるサービスを定義します。 それには、情報 (たとえば、現在のスタックフレーム) の要求、アクション (たとえば、ブレークポイントの設定)、通知 (たとえば、ブレークポイントに到達したとき) などのサービスが含まれます。 デバッガでは、JVMDI 以外の VM 情報 (Java Native Interface (JNI) など) も使用されますが、JVMDI はすべてのデバッガ固有情報のソースになります。
VM インタフェースを指定すると、VM 実装側からデバッグアーキテクチャに簡単にプラグインすることができます。 また、代替通信チャネルを実装することもできます。 このインタフェースに準拠しない VM 実装を使用した場合でも、Java Debug Wire Protocol (JDWP) を介してアクセスすることができます。
関連項目:
このプロトコルの仕様によって、debuggee とデバッガのフロントエンドを、異なる VM 実装または異なるプラットフォーム (その両方が異なってもかまわない) で実行できるようになります。 さらに、Java 以外の言語で記述されたフロントエンド、またはネイティブ以外の debuggee (Java など) も使用できるようになります。
情報および要求は、多くの場合、Java Virtual Machine Debug Interface (JVMDI) 層のものです。しかし、帯域幅の問題が発生した場合には、必要な情報および要求が追加されることがあります。たとえば、情報のフィルタ処理やバッチ処理などです。
関連項目:
ユーザコードレベルでの情報および要求を定義します。
デバッガの実装側では、Java Debug Wire Protocol (JDWP) が直接使用されるか、Java Virtual Machine Debug Interface (JVMDI) が使用されますが、このJDI インタフェースを使用すると、デバッグ機能を開発環境に簡単に統合することができます。 すべてのデバッガ開発で JDI 層を使用することをお勧めします。
関連項目:
| Copyright © 2001 Sun Microsystems, Inc. All Rights Reserved.
コメントの送付先: java-debugger@java.sun.com |