首页 > 代码库 > address2line 定位 Android c++奔溃位置
address2line 定位 Android c++奔溃位置
Android调用c++出现奔溃,崩溃信息为如下:
1 10-11 15:15:13.541 D/AudioMTKStreamOut( 139): write(), buffer = 0x42bd9390 bytes = 8192 mLatency = 92 2 10-11 15:15:13.562 I/PowerManagerService( 513): setBrightness mButtonLight, screenBrightness=245 3 10-11 15:15:13.575 I/DEBUG ( 9136): r0 40000001 r1 61e2a7a8 r2 becc2224 r3 becc2220 4 10-11 15:15:13.575 I/DEBUG ( 9136): r4 40000001 r5 61e2a7a8 r6 5f5501a0 r7 61e2a768 5 10-11 15:15:13.575 I/DEBUG ( 9136): r8 becc25bc r9 41b76d00 sl 41b70020 fp becc25d4 6 10-11 15:15:13.575 I/DEBUG ( 9136): ip 00000000 sp becc220c lr 60e6abd7 pc 610a672e cpsr 00000030 7 10-11 15:15:13.575 I/DEBUG ( 9136): 8 10-11 15:15:13.575 I/DEBUG ( 9136): backtrace: 9 10-11 15:15:13.575 I/DEBUG ( 9136): #00 pc 006d372e /data/data/com.linekong.dgr.langang/files/so_path/libgame.so (cocos2d::CCDictionary::setObject(cocos2d::CCObject*, std::string const&)+1)10 10-11 15:15:13.575 I/DEBUG ( 9136): #01 pc 000203c4 [stack]11 10-11 15:15:13.575 I/DEBUG ( 9136):12 10-11 15:15:13.575 I/DEBUG ( 9136): stack:13 10-11 15:15:13.575 I/DEBUG ( 9136): becc21cc 40049b30 /system/lib/libc.so (malloc+20)14 10-11 15:15:13.575 I/DEBUG ( 9136): becc21d0 0000002515 10-11 15:15:13.575 I/DEBUG ( 9136): becc21d4 612bfd8c /data/data/com.linekong.dgr.langang/files/so_path/libgame.so (operator new(unsigned int)+24)16 10-11 15:15:13.575 I/DEBUG ( 9136): becc21d8 0000000817 10-11 15:15:13.576 I/DEBUG ( 9136): becc21dc 61e2a79418 10-11 15:15:13.576 I/DEBUG ( 9136): becc21e0 61e2a79419 10-11 15:15:13.576 I/DEBUG ( 9136): becc21e4 612aa388 /data/data/com.linekong.dgr.langang/files/so_path/libgame.so20 10-11 15:15:13.576 I/DEBUG ( 9136): becc21e8 61e2a7d421 10-11 15:15:13.576 I/DEBUG ( 9136): becc21ec 60eb781b /data/data/com.linekong.dgr.langang/files/so_path/libgame.so22 10-11 15:15:13.576 I/DEBUG ( 9136): becc21f0 61e2a79423 10-11 15:15:13.576 I/DEBUG ( 9136): becc21f4 0000000824 10-11 15:15:13.576 I/DEBUG ( 9136): becc21f8 becc2220 [stack]25 10-11 15:15:13.576 I/DEBUG ( 9136): becc21fc becc2224 [stack]26 10-11 15:15:13.576 I/DEBUG ( 9136): becc2200 df00277727 10-11 15:15:13.576 I/DEBUG ( 9136): becc2204 e3a070ad28 10-11 15:15:13.576 I/DEBUG ( 9136): becc2208 61e2a76829 10-11 15:15:13.576 I/DEBUG ( 9136): #00 becc220c 4000000130 10-11 15:15:13.576 I/DEBUG ( 9136): becc2210 61e2a7a831 10-11 15:15:13.576 I/DEBUG ( 9136): becc2214 5f5501a032 10-11 15:15:13.576 I/DEBUG ( 9136): becc2218 61e2a76833 10-11 15:15:13.576 I/DEBUG ( 9136): becc221c 60e6abd7 /data/data/com.linekong.dgr.langang/files/so_path/libgame.so (CCJsonData::setStringValue(std::string, std::string)+58)34 10-11 15:15:13.576 I/DEBUG ( 9136): becc2220 5f5501a035 10-11 15:15:13.576 I/DEBUG ( 9136): becc2224 61e2a7d436 10-11 15:15:13.576 I/DEBUG ( 9136): becc2228 becc231c [stack]37 10-11 15:15:13.576 I/DEBUG ( 9136): becc222c 614ba9f0 /data/data/com.linekong.dgr.langang/files/so_path/libgame.so
这时候我们怎么查看奔溃点呢,可以使用address2line。
我的是mac版本的NDK_r8e,它的位置在
$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86_64/bin
;
你可以把这个路径添加到环境变量中,然后在工程的根目录下执行如下命令了。
arm-linux-androideabi-addr2line -C -f -e obj/local/armeabi/libXXX.so <address>
这边的address是崩溃的起始点,#00 pc开头的后面的那个地址。像我们可以看第9行的崩溃信息得到地址006d372e。
arm-linux-androideabi-addr2line -C -f -e obj/local/armeabi/libXXX.so 006d372e
可以看到最后等到下面这样的信息
./arm-linux-androideabi-addr2line -C -f -e obj/local/armeabi/libgame.so 006d372e
cocos2d::CCDictionary::setObject(cocos2d::CCObject*, std::string const&)
/Users/chuanwei/project/battlegirl/project/BattleGirl/proj.android/game/../../../cocos2dx/cocoa/CCDictionary.cpp:213
最后找到问题了。
address2line 定位 Android c++奔溃位置
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。