将调试器附加到JNI_CreateJavaVM创建的JVM

时间:2014-01-08 02:44:53

标签: java java-native-interface jdb jnienv

这是在Ubuntu 12.04 / Java 7,64位

处理项目以为WebkitGtk版本2创建Java绑定。我对WebkitGTK的主要兴趣是DOM访问和操作,而不是仅显示网页。对于V2,WebkitGtk团队改变了体系结构,允许通过扩展进行DOM访问。扩展由WebKitWebProcess加载,这是在启动webkit时触发的单独进程。

我控制了大部分内容。我的扩展程序正在加载并且JVM已启动,我的java类正在加载并且大部分都按预期工作。现在我的调试技术基本上是println语句和/或日志语句。

想知道我是否可以附加java调试器,以便我可以更轻松地调试java代码。如果我运行jps命令,WebKitWebProcess的PID确实会显示出来。所以有人知道这个过程有JVM。首选调试器将是eclipse。

基本上,它归结为如何使用JNI_CreateJavaVM并且进程已在运行的情况下附加java调试器。

1 个答案:

答案 0 :(得分:2)

原来很简单。创建VM时,只需传递调试器选项,如下所示。将调试器连接到端口9836,然后将其连接到调试器。

JavaVMOption options[3];
options[0].optionString = <your classpath>;
options[1].optionString = "-Xdebug";
options[2].optionString = "-agentlib:jdwp=transport=dt_socket,server=y,address=9836,suspend=n";