java - 如何从 ant 任务中调试 jni 代码?

标签 java linux debugging ant java-native-interface

使用 java 8。我有一个 junit 测试可以在 Windows 上正常工作,但在 linux 上失败。相同的代码,只是为不同的平台编译。调用从 java 到 jni 再到第三个库(都是内部编写的)。我想在 Linux 上调试 jni 和 lib 级别的调用,这样我就可以看到变量、返回值等方面可能存在哪些差异。

在 Windows 上,这很简单:从 IntelliJ 运行测试,在它命中 jni 调用之前设置断点,启动 Visual Studio 并附加到正确的 java 进程并在其中设置断点。让它运行并观察,根据需要观察。

我如何在 Linux 上做同样的事情?具体来说,调试jni和lib?我可以从 ant 运行测试,但愿意尝试其他方式在 Linux 上运行它。

最佳答案

您可以使用带有 CDT 插件的 Eclipse 实现同样的效果。程序基本相同: 1.启动Java项目,在开头打断点停止 2.运行Cpp库代码,附加刚刚启动的Java进程

按照本教程进行设置。本教程适用于 Windows,但对于 Unix,您可以密切关注它。 http://codeandme.blogspot.com.br/2011/09/jni-made-easy.html

我正在使用 Mac 来执行此操作。在将 Lib 附加到 Java 进程后,我遇到了一个小问题,我必须等待它启动,然后单击 Cpp 进程(在 Eclipse 调试 View 中)并恢复 cpp 进程,然后再返回到Java 进程并恢复它。之后调试正常运行并在任何 Cpp 断点处停止。

关于java - 如何从 ant 任务中调试 jni 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29474006/

相关文章:

java - 如何将具有共享主键的数据库模式转换为 hibernate ?

java - 防止未经授权访问由 servlet 定义的 Web 服务

windows - 使用套接字连接 linux 服务器和 windows 客户端时出现问题

php - 无法通过编织(远程访问)或从 Pi"s IP 连接到 Raspberry Pi 3 MySQL

debugging - 如何确定代码是作为函数执行还是使用单元格模式执行

c++ - 如何让 LLDB 打印当前行

java - Eclipse 重构

java - Tomcat 6.0.x 配置HTTP

linux - 如何在linux内核模块中使用c动态库

eclipse - 禁用 .class 文件中的断点