我在Windows上执行NDK堆栈跟踪工具时遇到问题。 可能是一个非常愚蠢的错误,所以这就是我的尝试:
...\android-ndk-r8d\ndk-stack.exe -sym ".../JNITest/obj/local/x86/" -dump ".../crash.txt"
我收到的消息如下:
********** Crash dump: **********
...
Stack frame #00 eip: 30303030: Unable to open symbol file .../JNITest/obj/local/x86//☺. Error (123): Unknown error
所以这个文件夹中有一个.so文件,应该包含符号(顺便说一下:如何判断是否属于这种情况?)
答案 0 :(得分:1)
使用ndk-build构建本机库时,它会创建一个包含所有调试信息的.so
文件,通常位于<proj>/obj/local/armeabi
目录中,之后安装通过剥离调试符号将文件存入<proj>/lib/armeabi
。后者被打包到APK中。
armeabi 最常用,因为大多数Android设备都使用ARM CPU。您的帖子引用了 x86 子目录。你真的在这个项目中使用了英特尔驱动的设备吗?您是否为x86构建了本机库?如果你这样做,你能在<proj>\obj\local\x86
目录中找到这个文件吗?
答案 1 :(得分:0)
在Windows 7上使用64位的Android NDK第9版时,我遇到了同样的ndk-stack.exe崩溃。更新到较新的NDK版本,版本9c,64位,问题就消失了。显然是NDK早期版本中的一个错误。
格雷格