JVMTIエージェントで作業しています。メソッドの入力と終了で同じスレッドを識別したいと思います。私はスレッド名を得ることができますが、それは十分ではありません。jvmtiのスレッドを一意に識別する方法
あなたは、このようなメソッドを持っている想像:
public class Main {
public static void myMethod() {
System.out.println("doing something as " + Thread.currentThread().getName());
Thread.currentThread().setName("SomethingDifferent");
System.out.println("doing something as same thread " + Thread.currentThread().getName());
}
}
だからこの方法は、1名を持っています入ると、このスレッドを終了するには、別の名前を持っています。このようJVMTIを使用している場合
:
static void JNICALL callback_on_method_entry(jvmtiEnv *jvmti, JNIEnv* env,
jthread thread, jmethodID method)
{
...
(*jvmti)->GetThreadInfo(jvmti, thread, &info);
...
}
static void JNICALL callback_on_method_exit(jvmtiEnv *jvmti, JNIEnv *env, jthread thread, jmethodID method, jboolean was_popped_by_exception, jvalue return_value)
{
...
(*jvmti)->GetThreadInfo(jvmti, thread, &info);
...
}
各info
は異なるスレッド名を報告し、私は彼らのために同じ識別子を持っていると思います。
スレッドに対して同じ識別子を取得するにはどうすればよいですか?
フィールド値を参照するThread
(tid
)にすることができます。 どうすればいいですか?私はヒープを通ってiteratすることができますが、私はフィールド名を取得することはできません。
...どこかに隠された質問がありますか、単にあなたの経験を共有したいですか? – specializt
タイトルを見なければなりません。しかし確かに私は記事に質問を追加しました。 – czs
これは問題ではなく、そのa文です。プラス:あなたのコンテンツの中にあなたの実際の質問を完全に排除すると、あなたは全くゼロの答えを得ることが保証されます。これは何らかのブログやフォーラムではなく、人々は助けたいと思っていますが、単純な質問を組み立てることができない場合でもそうすることを拒否しています....ほとんどの場合 – specializt