使用java 8.我有一个junit测试,可以在Windows上正常工作,并在Linux上失败。相同的代码,只为不同的平台编译。调用从java到jni到第三个库(都是内部编写的)。我想在Linux上的jni和lib级别调试调用,以便我可以看到变量,返回值等可能存在的差异。如何从蚂蚁任务调试jni代码?
在Windows上,这是一个快速:从IntelliJ运行测试,set断点即将到达jni调用之前,启动Visual Studio并附加到适当的java进程并在其中设置断点。让它运行并观察,随时观察。
如何在Linux上做同样的事情?具体来说,调试jni和lib?我可以从蚂蚁运行测试,但是可以尝试其他方式在Linux上运行它。
gdb可能很好用 – jgr208
你可以进一步了解一下吗?我尝试从gdb运行ant,但它说(关于ant):“文件格式无法识别”。继续,我试图在我想停止的方法上设置一个断点,它告诉我我没有加载符号表,使用文件命令。所以我输入了“file /path/to/libxxx.so”,然后键入'run -f junit.xml',它试图运行libxx.so文件时进行了segfaulted。 – Jon
呵呵?你不能从gdb运行ant,它听起来就像你想从蚂蚁调用gdb – jgr208