Pracuję na agencie JVMTI i chcę zidentyfikować ten sam wątek przy wchodzeniu i wychodzeniu z metody. Mogę uzyskać nazwę wątku, ale to nie wystarcza.Jak jednoznacznie identyfikować wątek w jvmti
Wyobraź sobie, że metody takie jak to:
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());
}
}
Więc wprowadzenie tej metody mają jedną nazwę i wychodzenie ten wątek mieć inną nazwę.
Podczas korzystania JVMTI tak:
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);
...
}
Każdy info
zgłosi inną nazwę wątku i chcę mieć taki sam identyfikator dla nich.
Jak mogę uzyskać ten sam identyfikator dla wątku?
Jednym z rozwiązań może być uzyskanie wartości pola z odniesieniem Thread
(tid
). Jak to zrobić? Potrafię przeglądać stertę, ale nie mogę uzyskać nazwy pola.
... czy jest jakieś pytanie ukryte gdzieś, czy po prostu chcesz podzielić się swoimi doświadczeniami? – specializt
Musisz spojrzeć na tytuł. Ale na pewno dodałem pytania do artykułu. – czs
To nie jest pytanie, to oświadczenie. Plus: całkowite wykluczenie twoich prawdziwych pytań w twoich treściach gwarantuje uzyskanie dokładnie zero odpowiedzi. To nie jest blog lub forum jakiegoś rodzaju, ludzie CHCĄ pomagać, ale też nie chcą tego robić, jeśli nie potrafisz nawet postawić prostego pytania .... przez większość czasu – specializt