如何通过JVMTI接口

时间:2017-02-13 05:16:21

标签: java java-native-interface jvmti jnienv

我正在使用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引用,我的问题是如何将它转换为一个给出类名的字符串?

1 个答案:

答案 0 :(得分:1)

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

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