4

私は現在、プログラムの実行中にローカル変数の変数名にアクセスし、それらを外部に渡すプログラムを作成しています。デバッグモードでコンパイルしない限り、Javaはコンパイル中にローカル変数名をダンプすることを知っています。

いくつか見てみると、JDI/JPDAがこの種の仕事に行く方法のようです。refを参照すると仮定するとThreadReference、これまでのところ、次のようになります。

ref.suspend();
StackFrame currentFrame = ref.frame(0);
List<LocalVariable> vars = currentFrame.visibleVariables();
ref.resume();

2つの質問:

  1. 私は正しい方向に進んでいますか、それともこれを行うためのより良い方法がありますか?
  2. ThreadReferenceに設定するを取得するにはどうすればよいrefですか?LocatableEventは私が必要としているもののようですが、誰かがそれを使用する方法の例を提供できますか?

よろしくお願いします!

4

2 に答える 2

1

このような経験をしたことがある人は多くありません。

他の場所で答えを探してください。コードへのリンクがありましたが、もうありません。回答が承認されたため、この回答を削除できません。

于 2010-07-12T18:15:21.963 に答える
0

はい、あなたは正しい軌道に乗っています!

JDI を使い始めようとする人にとって、"Trace" の例は非常に貴重です。

http://www.docjar.com/docs/api/com/sun/tools/example/trace/package-index.html

使えるバックボーンです。実際に ThreadReference を提供するイベントの使用方法を示します。また、2 番目の JVM をプログラムで起動する方法も示します。

于 2013-06-04T23:42:32.377 に答える