我在调试JNI应用程序时遇到问题。我在StackOverflow中读过几个线程,比如this one,this one或this one。我还试图在一个单独的shell中启动gdb并将其附加到正在运行的java进程。在这两种情况下,问题都是一样的:GDB找不到要调试的源代码。事情尝试了
没有任何效果。我花了好几天时间。我知道我的错误是在JNI包装器调用的C ++代码中,但我无法调试它。任何提示?如果有帮助,我将在Mac OS上的Parallels VM下在Debian 7中运行Eclipse Juno。
非常感谢,
答案 0 :(得分:2)
您需要在本机库中获得调试信息。您应该将-g
传递给编译器和链接器,以便在可执行文件中包含此信息。您可能还想添加-O0
。
答案 1 :(得分:2)
作为附加到Java进程的替代方法,您可以创建C ++应用程序并直接调试它。您只需要链接要测试的功能。在main函数create the VM中,使用RegisterNatives注册函数,然后启动使用它们的Java测试类。
希望调试器找到源代码没有问题,因为它只是C ++应用程序的正常编译/链接/调试循环的一部分。
答案 2 :(得分:0)
我建议从最新的ADT bundle开始。您甚至可以下载the Mac version,因此您甚至不需要Parallels(请参阅详细的instructions)。然后,在启动菜单中选择 Debug Android Native Application 。