4

具体的には、JDIとJPDAのコンテキストでは、次の質問があります。

  • ObjectReference基になるオブジェクトを公開しないのはなぜですか?なんらかの仕様に基づいていますか?Eclipse Debug Projectなどのすべての実装は、基になるオブジェクトを公開しないものと同じですか?

  • uniqueID()fromがある状況を考慮して、JVMObjectReferenceから基になるオブジェクトを解決する方法はありますか?

  • 前の質問に当てはまらない場合、基になるオブジェクトを解決するための最良の方法は何ですか?Value情報からのを取得する方法に精通していることを付け加えておきますが、フィールドの内部値や構造ではなく、オブジェクト参照StackFrameが本当に必要です。

4

1 に答える 1

3

ObjectReferenceが基になるオブジェクトを公開しないのはなぜですか?

私はあなたがcom.sun.jdi.ObjectReferenceインターフェースを参照していると仮定しています。もしそうなら、それは2つのことの組み合わせです:

  • 一見すると、それは意味がありません。ObjectReferenceはデバッガーを実行しているJVMにありますが、対応するJavaオブジェクトはターゲットマシンに存在します。

  • それが理にかなっていると仮定すると、実際のオブジェクトアドレスとメモリの内容を公開することは悪いことです。これにより、デバッガーはターゲットJVMに対して、ハードクラッシュにつながる可能性のある処理を実行できます。

ObjectReferenceからuniqueID()がある状況を考慮して、JVMから基になるオブジェクトを解決する方法はありますか?

いいえ。

前の質問に当てはまらない場合、基になるオブジェクトを解決するための最良の方法は何ですか?

AFAIK、JVMツールインターフェイスを使用してC / C ++で独自のデバッグエージェントを作成し、それを実行するようにターゲットJVMを構成する以外に、これを行う方法はありません。

于 2010-11-12T15:15:41.837 に答える