|
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) を介してアクセスすることができます。
関連項目:
このプロトコルの仕様によって、異なる VM 実装または異なるプラットフォーム、あるいはその両方で、debuggee およびデバッガのフロントエンドを実行することができます。Java 以外の言語で記述されたフロントエンド、またはネイティブ以外の debuggee (Java など) も使用できます。
情報および要求は、多くの場合、Java Virtual Machine Debug Interface (JVMDI) 層にあります。 ただし、帯域幅の問題が発生した場合は、必要な情報および要求が追加されます。 例には、フィルタ処理およびバッチ処理の情報も含まれています。
関連項目:
ユーザコードレベルの情報および要求を定義します。
デバッガの実装側では、Java Debug Wire Protocol (JDWP) および Java Virtual Machine Debug Interface (JVMDI) が直接使用されますが、このインタフェースを使用すると、デバッグ機能を開発環境に簡単に統合することができます。すべてのデバッガ開発で JDI を使用することをお勧めします。
関連項目:
| Copyright © 1997-1999 Sun Microsystems, Inc. All Rights Reserved.
コメントの送付先: java-debugger@java.sun.com |