JDIおよびJPDAのオブジェクトの基礎となるオブジェクト
質問
非常に具体的には、JDIと JPDA コンテキストでは、次の質問があります。
なぜ
ObjectReference
その基礎となるオブジェクトは公開しませんか?いくつかの仕様に基づいていますか? Eclipse Debugプロジェクトなどのすべての実装は、基礎となるオブジェクトを公開しないのと同じですか?あなたが持っている状況を考慮して
uniqueID()
からObjectReference
, 、基礎となるオブジェクトをから解決する方法はありますか JVM?前の質問に違反しない場合、基礎となるオブジェクトを解決する最良の方法は何ですか?私はその方法に精通していると付け加えるべきです
Value
から取得できますStackFrame
情報、しかし私は本当に必要です オブジェクト参照 フィールドの内部値や構造ではありません。
解決
ObjectReferenceが基礎となるオブジェクトを公開しないのはなぜですか?
私はあなたが言及していると仮定しています com.sun.jdi.ObjectReference
インターフェース。もしそうなら、それは2つのことの組み合わせです:
それに直面して、それは意味をなさないでしょう。オブジェクトはデバッガーを実行しているJVMにありますが、対応するJavaオブジェクトはターゲットマシンに存在します。
それが理にかなっていると仮定すると、実際のpbjectアドレスとメモリの内容を公開するのは悪いことです。これにより、デバッガーはターゲットJVMに物事を行うことができ、これによりハードクラッシュにつながります。
ObjectReferenceから一意の()があるという状況を考慮して、JVMから基礎となるオブジェクトを解決する方法はありますか?
いいえ。
前の質問に違反しない場合、基礎となるオブジェクトを解決する最良の方法は何ですか?
AFAIK、JVMツールインターフェイスを使用してC / C ++で独自のデバッグエージェントを作成し、ターゲットJVMを実行するように構成することを除けば、これを行う方法はありません。