ndk-stack使用方法

本文介绍如何利用ndk-stack工具来定位Cocos2d-x Android项目中的崩溃问题,并通过实例展示了如何从堆栈信息中找到真正的崩溃源代码位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过去用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行,这之间有什么对应关系呢,望有经验的高手告知


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天马流星2719

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值