过去用eclipse跑cocos2d android崩溃了只能出一个Fatal signal信号,现在有了ndk-stack好了一点点,能定位到哪个函数崩溃了,用法如下
我的cocos2d-x android工程在 D:\Works\Demo\HelloCocos\proj.android目录下,NDK_ROOT (即安装NDK的路径)环境变量已经配好,在cmd命令行输入如下:
adb logcat | %NDK_ROOT%\ndk-stack -sym D:/Works/Demo/HelloCocos/proj.android/obj/local/armeabi
或 adb logcat | %NDK_ROOT%\ndk-stack -sym D:/Works/Demo/HelloCocos/proj.android/obj/local/armeabi - dump d:/log.txt (log到文件)
会显示waiting for device -
这时你可以插入你的手机,或adb connect你的设备
然后你可以打开eclipse编译运行你的工程了,就是打开你的ADT 右击你的工程,->Debug as -> Android Application
这时只要你的程序 崩溃,就会显示出Crash信息,如下
********** Crash dump: **********
Build fingerprint: 'Xiaomi/aries/aries:4.1.1/JRO03L/JLB29.0:user/release-keys'
pid: 6546, tid: 6575, name: Thread-9654 >>> com.cocos2dx.SanGo <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
Stack frame #00 pc 00013a78 /system/lib/libc.so
Stack frame #01 pc 00015e55 /system/lib/libc.so (dlfree+1628)
Stack frame #02 pc 00017003 /system/lib/libc.so (free+10)
Stack frame #04 pc 0049664c /data/data/com.cocos2dx.HelloCocos-2/libcocos2dcpp.so (HelloWorld::init()+648): Routine CCLog in /Users/name/test/libs/cocos2dx/platform/android/Appdelegate.cpp:108
大家以为Appdelegate.cpp:108是出错位置,其实错了,我故意加的错是在HelloWorld::init()里的某一行,但是我搞不懂+648是什么意思,错误行是89行,这之间有什么对应关系呢,望有经验的高手告知