【教程分享】如何使用NDK-STACK tool来恢复Cocos2d-x安卓错误堆栈信息

********** Crash dump: **********
Build fingerprint: ‘generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys’
pid: 351, tid: 351 >>> /data/local/ndk-tests/crasher <<<
signal 11 (SIGSEGV), fault addr 0d9f00d8
Stack frame #00 pc 0000841e /data/local/ndk-tests/crasher : Routine zoo in /tmp/foo/crasher/jni/zoo.c:13
Stack frame #01 pc 000083fe /data/local/ndk-tests/crasher : Routine bar in /tmp/foo/crasher/jni/bar.c:5
Stack frame #02 pc 000083f6 /data/local/ndk-tests/crasher : Routine my_comparison in /tmp/foo/crasher/jni/foo.c:9
Stack frame #03 pc 000191ac /system/lib/libc.so
Stack frame #04 pc 000083ea /data/local/ndk-tests/crasher : Routine foo in /tmp/foo/crasher/jni/foo.c:14
Stack frame #05 pc 00008458 /data/local/ndk-tests/crasher : Routine main in /tmp/foo/crasher/jni/main.c:19
Stack frame #06 pc 0000d362 /system/lib/libc.so
这些日志还是看的不是很明白,zoo.c:13 是说在zoo.cpp的第13行崩溃了的意思么? 希望能给讲解一下,感谢版主。

NDK-STACK tool这个是第三方工具还是Eclipse自带的呀?

adb logcat > crash.txt
这一句是用adb logcat工具把程序运行时的信息通过管道输出至crash.txt。当然你也可以把手机连上eclipse调试,然后把打印信息复制出来保存成crash.txt。

$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump crash.txt
这一句是调用ndk-stack.exe复原crash.txt内容所指的崩溃堆栈。其中NDK是在环境变量里定义的android ndk根目录,PROJECT_PATH是在环境变量里定义的你的app编译目录。这两个变量都可以直接输入全路径(不用在环境变量里定义)。如果在windows环境变量中定义NDK和PROJECT_PATH,则在cmd里调用这个路径应当使用%NDK%和%PROJECT_PATH%,$符号是linux系统上的用法。

$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump crash.txt > detail.txt
这句可以将还原的崩溃堆栈输出到detail.txt中

谢谢,正好解决我的苦恼。终于找到崩溃的地址。

楼主,或者其他人还在么?

楼主,或者其他人还在么?你好。你是怎么解决的,我这比那还是一大推.so,并没有行号提示啊

你好,我这边还是一堆.so文件,没有具体信息