那裏, 我有一個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如何運行該調用。不太清楚如何做到這一點仍然谷歌和尋找線索。 –