那里, 我有一个C++函数调用转换为Java模块这个样子。我的问题是如何调试到java代码?在程序中,有一个“JNI_CreateJavaVM()”函数调用来创建VM并将Java类加载到其中。我用GDB进入下面的代码。 这对我来说真是一招。请给我一些想法。非常感谢!如何通过本地调用GDB来调试java函数?
void functions::call(jobject jo, const Parameter_list& parameter_list) const
{
Env env;
env->CallVoidMethodA(jo, id(), JVALUES_CAST(parameter_list.jvalue_array()));
if(env->ExceptionCheck()) env.throw_java("CallVoidMethodA");
}
jni.h:
void CallVoidMethodA(jobject obj, jmethodID methodID,
const jvalue * args) {
functions->CallVoidMethodA(this,obj,methodID,args);
}
如果基于C/C++的JVM,我将能够尽可能接近去Java线程在里面。可能是我应该采取另一种方式使用JDB附加到JVM,并在某处查看JVM如何运行该调用。不太清楚如何做到这一点仍然谷歌和寻找线索。 –