sto lavorando su JVMTI agent e voglio identificare lo stesso thread sul metodo enter e exit. Sono in grado di ottenere il nome del thread, ma non è sufficiente.Come identificare univocamente thread in jvmti
Immaginate di avere un metodo come questo:
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());
}
}
Quindi entrare in questo metodo avrà un nome e l'uscita questa discussione hanno nome diverso.
Quando si utilizza JVMTI come questo:
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);
...
}
Ogni info
riporterà nome diverso filo e voglio avere lo stesso identificatore per loro.
Come posso ottenere lo stesso identificatore per il thread?
Una soluzione può essere quella di ottenere il valore di campo del riferimento Thread
(tid
). Come si fa? Posso scorrere l'heap ma non riesco a ottenere il nome del campo.
... c'è una domanda nascosta da qualche parte o hai semplicemente voglia di condividere le tue esperienze ?? – specializt
Devi guardare il titolo. Ma di sicuro ho aggiunto delle domande all'articolo. – czs
Questa non è una domanda, è una dichiarazione. Inoltre: escludendo completamente le tue domande effettive all'interno dei tuoi contenuti è garantito ottenere esattamente zero risposte. Questo non è un blog o forum di qualche tipo, le persone VOGLIONO aiutare, ma anche rifiutare di farlo se non riesci nemmeno a mettere insieme una semplice domanda .... la maggior parte delle volte – specializt