如何使用 java 项目在 Eclipse 中调试本机 jni C++ 代码
How to debug native jni c++ code in eclipse with java project
我有一个 Java 项目,我在其中使用了本机库 (dll),其代码是用 CPP 编写的。我想调试 java 应用程序,一旦我到达调用 dll 中编译的本机方法的位置,我就想进入 CPP 代码。我应该怎么做?是否有任何可用的 IDE 可以在 java 和 cpp 代码之间切换调试?
不知道有任何调试器可以实际切换,但您可以将两个调试器附加到您的进程。在 Java IDE 中以调试模式启动 Java 程序会附加 Java 调试器。然后打开用于 CPP 代码的 IDE 并将其调试器附加到 运行 Java 进程。
在 Visual Studio 中,这将是 Debug -> Attach to Process...
。你会得到一个带有进程列表的对话框。在此处选择您的 Java 进程。如果 Visual Studio 无法正确检测到,您可能必须将列表正上方的字段切换为 "Native code"。在您的 CPP 代码中设置适当的断点,调试器将停在那里。确保您的 Java 进程加载库的调试版本才能正常工作。
这也适用于 Eclipse:开始调试调用 .dll(或 .so,在 Linux 上)的 "enveloping Java application",在附件本机调用处设置断点并启动第二个调试器在那里启动的本机进程....
结果是:2 个调试器,一个 运行 在 Java 中,第二个在本机 .dll/.so 中...当后者完成并再次 returns 到 Java , 应该可以从那里恢复 Java 调试。在我的环境中,此设置有效。
我有一个 Java 项目,我在其中使用了本机库 (dll),其代码是用 CPP 编写的。我想调试 java 应用程序,一旦我到达调用 dll 中编译的本机方法的位置,我就想进入 CPP 代码。我应该怎么做?是否有任何可用的 IDE 可以在 java 和 cpp 代码之间切换调试?
不知道有任何调试器可以实际切换,但您可以将两个调试器附加到您的进程。在 Java IDE 中以调试模式启动 Java 程序会附加 Java 调试器。然后打开用于 CPP 代码的 IDE 并将其调试器附加到 运行 Java 进程。
在 Visual Studio 中,这将是 Debug -> Attach to Process...
。你会得到一个带有进程列表的对话框。在此处选择您的 Java 进程。如果 Visual Studio 无法正确检测到,您可能必须将列表正上方的字段切换为 "Native code"。在您的 CPP 代码中设置适当的断点,调试器将停在那里。确保您的 Java 进程加载库的调试版本才能正常工作。
这也适用于 Eclipse:开始调试调用 .dll(或 .so,在 Linux 上)的 "enveloping Java application",在附件本机调用处设置断点并启动第二个调试器在那里启动的本机进程.... 结果是:2 个调试器,一个 运行 在 Java 中,第二个在本机 .dll/.so 中...当后者完成并再次 returns 到 Java , 应该可以从那里恢复 Java 调试。在我的环境中,此设置有效。