我在Windows上执行NDK堆栈跟踪工具时有问题。可能只是一个相当愚蠢的错误,所以这是我尝试的:
...android-ndk-r8dndk-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文件在这个文件夹中,应该包含符号(BTW:我怎么能检查如果是这种情况?)
当您使用ndk-build构建本机库时,它会创建一个包含所有调试信息的.so
文件,通常在目录<proj>/obj/local/armeabi
中,然后通过剥离调试符号将该文件安装到<proj>/lib/armeabi
中。后者被装入APK中。
armeabi是最常用的,因为大多数Android设备都使用ARM CPU。你的帖子是指x86子目录。你真的在这个项目中使用了英特尔驱动的设备吗?您是否为x86构建了本机库?如果您这样做了,您能在<proj>objlocalx86
目录中找到这个文件吗?
在Windows 7上使用Android NDK Release 9, 64位时,我有同样的NDK -stack.exe崩溃。更新到更新的NDK版本,Release 9c, 64位,问题就解决了。显然是早期版本的NDK中的一个错误。
格雷格