我能否通过 JNI 调试在本机代码中创建的 JVM?

Can I debug a JVM created in native code via JNI?

本文关键字:本机代码 创建 JVM 调试 JNI      更新时间:2023-10-16

我有一个使用 JNI_CreateJavaVM(( 函数创建 JVM 的C++程序。 该程序运行良好,但我希望能够调试 Java 代码中的事件,例如添加断点。 JDB 调试应用程序似乎具有 -attach 和 -connect 参数,这些参数可能能够连接到我在本机代码中创建的 JVM。 有人这样做过吗? 它能起作用吗? 或者,是否有另一种方法来调试在本机代码中创建的 JVM?

谢谢! 担

如果可以指定 JVM 的启动参数,则可以打开用于调试连接的端口。

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9009

每个Java IDE都可以使用此协议,例如,请参阅Intellij IDEA中的Run->附加到本地进程。