【问题标题】:Debugging JNI on Eclipse CDT ( MinGW & GDB )在 Eclipse CDT (MinGW & GDB) 上调试 JNI
【发布时间】:2013-12-23 04:48:30
【问题描述】:

我在 Windows 7 上使用 Eclipse CDT,MinGW 作为我的工具链,GDB 作为我的调试器。在大多数情况下,我已经能够让一切正常工作,包括 Java、C/C++ 和 JNI 应用程序的开发。

但是,我无法调试这些 JNI 应用程序的本机端。 Java 调试器适用于 Java 代码,而 GDB 适用于纯本机代码,但我似乎无法让 GDB 对 JNI .DLL 中的代码正常运行。

我已经在网上搜索了很长一段时间,听起来人们取得的成功是通过在从 Eclipse 启动 Java 进程后附加到正在运行的 Java 进程。然后,设置一个断点并让 GDB 命中它。不幸的是,这似乎不适用于 Windows 用户。

似乎可行的唯一建议(我可以确认)是在 Eclipse 中启动 Java 应用程序,然后从 Visual Studio 附加到该进程。从那里您可以在本机代码中设置断点,它们将被命中。这种方法本身就是一种痛苦,但真正令人讨厌的是,您需要从 Visual Studio 编译 .DLL 才能生成用于调试符号的 .PDB 文件。在这一点上使整个 CDT 有点无关紧要。

我更愿意留在 Eclipse 中,但前提是我可以实际使用它进行调试。任何人都可以确认是否可以从 Windows 使用 Eclipse CDT 调试 JNI 代码?

【问题讨论】:

    标签: eclipse java-native-interface gdb mingw eclipse-cdt


    【解决方案1】:

    经过更多的挖掘,我已经确认这绝对可以使用当前(Kepler)构建的 Eclipse 和 MinGW。

    这实际上似乎是我的问题;我拥有的 GDB 版本根本无法附加到任何进程(我从命令行验证了这一点)。使用新的 gdb.exe 更新到当前版本的 MinGW 后,我可以正确附加并查看所有线程。获得断点需要更多的工作(我在 gcc 编译中缺少 -g ),但之后一切似乎都很好。

    【讨论】:

    • 您能解释一下您是如何将调试器准确地附加到 Eclipse CDT 上的 Java 进程的吗?我正在努力解决同样的问题,我看不到任何附加到进程或查看任何线程的选项。我看到的最接近的选项是“C/C++ 附加到应用程序”,这显然不是我需要的。
    猜你喜欢
    • 2013-11-20
    • 2015-04-06
    • 2010-12-07
    • 2015-11-12
    • 2011-08-25
    • 2012-02-18
    • 2013-04-01
    • 2013-01-18
    • 1970-01-01
    相关资源
    最近更新 更多