如何使用Eclipse调试在我自己的C ++创建的JVM中运行的Java代码? 我有一个本机应用程序执行以下操作:
JavaVM *javaVM;
JNIEnv *jniEnv;
long flag = JNI_CreateJavaVM(&javaVM, (void**) &jniEnv, &vmArgs);
jclass jcls = env->FindClass("my/namespace/Demo");
// then run code
[...]
我从那里运行了一些Java代码。 至关重要的是,我有一个完整的Eclipse环境和调试器,这样我就可以每天在良好的条件下编写和调试我的Java代码。
我的问题如下:我如何设置?
例如,在使用Visual Studio的Windows上,我可以:
::DebugBreak()
工具(或C#等价物)。我发现的唯一与我的问题类似的是
Debug a java application without starting the JVM with debug arguments
问题是9岁。
最佳,
MF
注意:请注意,我不是要尝试调试从Java应用程序运行的JNI C ++代码。我在我的问题中添加了jni
标记,因为我怀疑JNI人员可以在这里提供帮助。
答案 0 :(得分:2)
为了使用Eclipse的完整Java调试功能,您需要使用JDWP代理启动JVM,即传递以下JVM参数:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999
JDWP需要一些仅在VM启动时可用的JVM TI可用性。这意味着如果在没有JDWP代理的情况下启动JVM,则以后无法附加调试器。
我建议设置一些命令行参数或环境变量,以指示您的C ++程序在创建JVM之前应将上述agentlib
参数添加到vmArgs
。然后,您将能够将Java调试器附加到address
参数中指定的端口。