【问题标题】:How to get the class in which the method is declared using jmethod id via JVMTI interface如何通过JVMTI接口获取使用jmethod id声明方法的类
【发布时间】:2017-02-13 05:16:20
【问题描述】:

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

【问题讨论】:

  • 调试器是用 C 编写的
  • 抱歉删除标签
  • 我给你了:)
  • 谢谢.........:)

标签: java java-native-interface jvmti jnienv


【解决方案1】:

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

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

【讨论】:

  • 我需要在调用此方法时获取方法和类中的局部变量及其对应的值,有没有办法使用JVMTI本身来做到这一点?谢谢
  • 我不确定。看看这里,也许这会对你有所帮助:stackoverflow.com/questions/7041177/…
猜你喜欢
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多