2017-02-13 95 views
0

我正在使用JVMTI接口的API爲JVM編寫自定義調試器,我需要獲取聲明方法的類名,使用error = (*jvmti)->GetMethodName(jvmti,frames[i].method,&methodName,NULL,NULL);,我試圖讓使用error = (*jvmti)->GetMethodDeclaringClass(jvmti,frames[i].method,&declaring_class_ptr);如何通過JVMTI接口使用jmethod id來聲明方法的類

這將返回在declaring_class_ptr的JCLASS引用的類名,我的問題的方法的方法ID是如何將其轉換爲一個字符串,使類的名字嗎?

+0

調試正在寫在C – kumarD

+0

對不起移除標籤 – kumarD

+0

我爲你':)' –

回答

1

爲了得到你需要使用GetClassSignature,像類名:

char* name; 
jvmti->GetClassSignature(class, &name, NULL); 
trace(jvmti, "Class prepared: %s", fix_class_name(name)); 
jvmti->Deallocate((unsigned char*)name); 
+0

當我調用這個方法時,我需要獲取方法和類中的局部變量及其相應的值,有沒有一種方法可以使用JVMTI本身執行此操作? 謝謝 – kumarD

+0

我不確定。看看這裏,也許這會幫助你一點:http://stackoverflow.com/questions/7041177/jvmti-how-to-get-the-value-of-a-method-parameter-from-callback – yakobom