如何通过 JVMTI 接口使用 jmethod id 获取声明方法的 class

How to get the class in which the method is declared using jmethod id via JVMTI interface

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

获取 class 名称

this returns declaring_class_ptr 中的 jclass 引用,我的问题是如何将其转换为给出 class 名称的字符串?

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

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