我正在使用JVMTI接口的API为JVM编写自定义调试器,我需要获取在其中声明该方法的类名称,我需要在error = (*jvmti)->GetMethodName(jvmti,frames[i].method,&methodName,NULL,NULL);中获取该方法的方法ID,并且我正在尝试使用error = (*jvmti)->GetMethodDeclaringClass(jvmti,frames[i].method,&declaring_class_ptr);

这将返回declaring_class_ptr中的jclass引用,我的问题是如何将其转换为给出类名称的字符串?

最佳答案

要获取类名称,您需要使用GetClassSignature,例如:

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

关于java - 如何通过JVMTI接口(interface)使用jmethod id获取在其中声明方法的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42197073/

10-11 00:33