cocos2d-x移植-adds2line.sh的使用篇

当在android设备上好好的运行着用cocos2d-x的游戏时,突然,就退出了游戏。让人抓狂啊!找了半天不知道哪里出了错误。

只见在logcat 中出现一条红色的error,如下图

   Fatal singnal 11 你妹,这是什么玩儿。 google 百度,半天。  只有 一个翻译“致命信号11” 。dogshit!!

编写android 代码惯了,只对红色 的error 级别的日志感兴趣了,完全忽略了绿色的debug级的日志。

仔细检索了一下日志 发现了一些有规律的绿色日志 如下





这它码不是 我的项目的包名。com.koolearn.hallowmastTTT 吗?哦它吗 如何是好。


网上寻找了一下如何搞定这个问题 ,热心的网友 说 ndk 里有个工具 adds2line  可以从这个日志里找到你代码错误的地方!

我他妈不信。难过 抱着试试的态度。我给查了一下adds2line 的用法 就总结如下了


1.制作一个能常用的脚本


#!/bin/sh

$NDK_ROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/arm-linux-androideabi-addr2line -C -f -e obj/local/armeabi/libgame.so $1


打开文本编辑器复制上面的代码 并保存为adds2line.sh 放在你的工程目录下 ,当然是你的android项目工程根目录。 那个项目需要,就把它复制一份放在新项目里,脚本内容我就不解释了,想了解的上网查查。

如下图




2.使用这个脚本


打开您的终端   就这东西 ,进入您的android项目根目录  , 用adds2line.sh + 地址


命令步骤如下


localhost:cocos2d-2.0-x-2.0.4 lili$ cd ~
localhost:~ lili$ cd /Applications/androidsoft/cocos2d-2.0-x-2.0.4/HallowmasTTT/
localhost:HallowmasTTT lili$ ls
Classes Resourcesproj.android
localhost:HallowmasTTT lili$ cd proj.android/
localhost:proj.android lili$ ls
AndroidManifest.xml build.xmllocal.propertiesres
adds2line.sh build_native.shndkgdb.shsrc
ant.properties genobj
assets jni proguard-project.txt
bin libs project.properties
localhost:proj.android lili$ ./adds2line.sh 001122cf
PurpleHouseLayer::littleRock()
/Applications/androidsoft/cocos2d-2.0-x-2.0.4/HallowmasTTT/proj.android/jni/../../Classes/Game/s198/PurpleHouseLayer.cpp:292

localhost:proj.android lili$ 
localhost:proj.android lili$ 


 红色部分就是我代码错误地方。。在PurpleHouseLayer.cpp 292 行出错。。赶紧到xcode中把它修复吧 ^8^!


好吧就此结束。。大笑












有的同学就不满意了。博主你妹的,坑同学我!你妹哪来的001122cf    dogshit!  fuck out!疑问


这个才是关键之出得意  


奋斗好吧 给你们看看  ,看下面的日志


10-17 11:10:54.257: I/DEBUG(12788): backtrace:
10-17 11:10:54.257: I/DEBUG(12788):     #00  pc 001565a2  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCDictionary::objectForKey(std::string const&)+21)
10-17 11:10:54.257: I/DEBUG(12788):     #01  pc 00156fc9  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCDictionary::valueForKey(std::string const&)+16)
10-17 11:10:54.257: I/DEBUG(12788):     #02  pc 00188c15  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCParticleSystem::initWithDictionary(cocos2d::CCDictionary*)+80)
10-17 11:10:54.257: I/DEBUG(12788):     #03  pc 00188b79  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCParticleSystem::initWithFile(char const*)+148)
10-17 11:10:54.257: I/DEBUG(12788):     #04  pc 0018e66d  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCParticleSystemQuad::create(char const*)+40)
10-17 11:10:54.257: I/DEBUG(12788):     #05  pc 001122cf  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (PurpleHouseLayer::littleRock()+34)
10-17 11:10:54.257: I/DEBUG(12788):     #06  pc 001425cd  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCCallFunc::execute()+80)
10-17 11:10:54.257: I/DEBUG(12788):     #07  pc 00142575  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCCallFunc::update(float)+20)
10-17 11:10:54.257: I/DEBUG(12788):     #08  pc 00143bc1  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCSequence::update(float)+452)
10-17 11:10:54.257: I/DEBUG(12788):     #09  pc 00143399  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCActionInterval::step(float)+368)
10-17 11:10:54.257: I/DEBUG(12788):     #10  pc 0014cd63  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCActionManager::update(float)+122)
10-17 11:10:54.257: I/DEBUG(12788):     #11  pc 00136ae1  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCScheduler::update(float)+104)
10-17 11:10:54.257: I/DEBUG(12788):     #12  pc 0015e5bb  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCDirector::drawScene()+54)
10-17 11:10:54.257: I/DEBUG(12788):     #13  pc 0015fb7b  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (cocos2d::CCDisplayLinkDirector::mainLoop()+54)
10-17 11:10:54.265: I/DEBUG(12788):     #14  pc 00198425  /data/data/com.koolearn.hallowmastTTT/lib/libgame.so (Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeRender+20)
10-17 11:10:54.265: I/DEBUG(12788):     #15  pc 0001deb0  /system/lib/libdvm.so (dvmPlatformInvoke+112)
10-17 11:10:54.265: I/DEBUG(12788):     #16  pc 0004d103  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+394)
10-17 11:10:54.265: I/DEBUG(12788):     #17  pc 00000214  /dev/ashmem/dalvik-jit-code-cache (deleted)
10-17 11:10:54.265: I/DEBUG(12788): stack:


在backtrace:   和stack:之间 的日志 只见 #xx  pc + 地址  .so动态库  (具体空间::类名::函数名+行数)

最上面的#00是抛出的最底层,#17是抛出的最顶层,想必同学们也看到了红色那一行。是的!就是他了  pc  后面的 001122cf  。。 就 pc 后面的管用。其他地方的地址试了 没用。

看了两三遍红色那一行上面下面错误的地方。估计了一下出错原因

CCParticleSystemQuad::create  粒子系统创建

cocos2d::CCDictionary::valueForKey  字典找资源

估计是粒子系统没有找到某个粒子系统配置文件


代码中是这样的

 CCParticleSystemQuad* fireParticle =CCParticleSystemQuad::create("winFlash.plist");

这个配置文件是 winFlash.plist


找到原因了。我的 Resource文件夹下没有这个配置文件。加上就解决了。大笑


呵呵。。


总结:

  用adds2line 就是找到你代码出错的地方,一般cocos2d-x库是不会有错的。大部分是自己代码有错误。寻找出错的地方时找到自己的类和函数,并且仔细查看上下错误的地方。估计错误的原因。一般这些问题都能非常快速锁定的。快速解决的。


谢谢同学们 阅读。

  

10 月31 推出《 多纳学英语:万圣节》





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值