address2line 定位 Android c++奔溃位置
Android调用c++出现奔溃,崩溃信息为如下:
10-11 15:15:13.541 D/AudioMTKStreamOut( 139): write(), buffer = 0x42bd9390 bytes = 8192 mLatency = 92
10-11 15:15:13.562 I/PowerManagerService( 513): setBrightness mButtonLight, screenBrightness=245
10-11 15:15:13.575 I/DEBUG ( 9136): r0 40000001 r1 61e2a7a8 r2 becc2224 r3 becc2220
10-11 15:15:13.575 I/DEBUG ( 9136): r4 40000001 r5 61e2a7a8 r6 5f5501a0 r7 61e2a768
10-11 15:15:13.575 I/DEBUG ( 9136): r8 becc25bc r9 41b76d00 sl 41b70020 fp becc25d4
10-11 15:15:13.575 I/DEBUG ( 9136): ip 00000000 sp becc220c lr 60e6abd7 pc 610a672e cpsr 00000030
10-11 15:15:13.575 I/DEBUG ( 9136):
10-11 15:15:13.575 I/DEBUG ( 9136): backtrace:
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-11 15:15:13.575 I/DEBUG ( 9136): #01 pc 000203c4 [stack]
10-11 15:15:13.575 I/DEBUG ( 9136):
10-11 15:15:13.575 I/DEBUG ( 9136): stack:
10-11 15:15:13.575 I/DEBUG ( 9136): becc21cc 40049b30 /system/lib/libc.so (malloc+20)
10-11 15:15:13.575 I/DEBUG ( 9136): becc21d0 00000025
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)
10-11 15:15:13.575 I/DEBUG ( 9136): becc21d8 00000008
10-11 15:15:13.576 I/DEBUG ( 9136): becc21dc 61e2a794
10-11 15:15:13.576 I/DEBUG ( 9136): becc21e0 61e2a794
10-11 15:15:13.576 I/DEBUG ( 9136): becc21e4 612aa388 /data/data/com.linekong.dgr.langang/files/so_path/libgame.so
10-11 15:15:13.576 I/DEBUG ( 9136): becc21e8 61e2a7d4
10-11 15:15:13.576 I/DEBUG ( 9136): becc21ec 60eb781b /data/data/com.linekong.dgr.langang/files/so_path/libgame.so
10-11 15:15:13.576 I/DEBUG ( 9136): becc21f0 61e2a794
10-11 15:15:13.576 I/DEBUG ( 9136): becc21f4 00000008
10-11 15:15:13.576 I/DEBUG ( 9136): becc21f8 becc2220 [stack]
10-11 15:15:13.576 I/DEBUG ( 9136): becc21fc becc2224 [stack]
10-11 15:15:13.576 I/DEBUG ( 9136): becc2200 df002777
10-11 15:15:13.576 I/DEBUG ( 9136): becc2204 e3a070ad
10-11 15:15:13.576 I/DEBUG ( 9136): becc2208 61e2a768
10-11 15:15:13.576 I/DEBUG ( 9136): #00 becc220c 40000001
10-11 15:15:13.576 I/DEBUG ( 9136): becc2210 61e2a7a8
10-11 15:15:13.576 I/DEBUG ( 9136): becc2214 5f5501a0
10-11 15:15:13.576 I/DEBUG ( 9136): becc2218 61e2a768
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)
10-11 15:15:13.576 I/DEBUG ( 9136): becc2220 5f5501a0
10-11 15:15:13.576 I/DEBUG ( 9136): becc2224 61e2a7d4
10-11 15:15:13.576 I/DEBUG ( 9136): becc2228 becc231c [stack]
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
最后找到问题了。
附加:这边提供另外一个方式查找问题,利用google提供的脚本,脚本地址
http://code.google.com/p/android-ndk-stacktrace-analyzer/
使用 adb logcat -d > logfile 导出 crash 的log,然后用arm-linux-androideabi-objdump,跟arm-linux-androideabi-addr2line位于同一个目录下,
把so或exe转换成汇编代码,如:arm-linux-androideabi-addr2line -S mylib.so > mylib.asm,
使用脚本 python parse_stack.py <asm-file> <logcat-file> 解析。
address2line 定位 Android c++奔溃位置的更多相关文章
- android 抓取native层奔溃
使用android的breakpad工具 使用这个工具需要下载Breakpad的源码,然后进行编译,编译之后会生成两个工具 我们使用这两个工具来解析奔溃的位置.这里我们可以下载已经编译好的工具 下载地 ...
- Android 如何避免运行时奔溃
奔溃问题 android运行的时候难免会有一些空指针(NullPointerException)或者下标越界(IndexOutOfBoundsException),用户使用的过程操作某一个按钮的时候, ...
- Android jni c/c++线程通过CallVoidMethod调用java函数出现奔溃问题
最近在移植网络摄像机里的p2p库到android平台,需要用到jni,最近在c线程了调用java函数的时候 出现一个问题,假如在同一个线程调用java函数是没问题的,但在一个c线程了调用java函数就 ...
- android app记录执行日志 捕获奔溃异常 ,存储日志到文件
app在执行过程中.为了后期的维护升级,记录日志是一个很好的方法. 为了读取到app执行时的日志,一般的作法是单独开一个线程,在app执行的启动线程.然后app退出时停掉线程. 然而我们更好的方法是开 ...
- 查找和定位Android应用的按钮点击事件的代码位置基于Xposed Hook实现
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956455 在进行Android程序的逆向分析的时候,经常需要通过Androi ...
- MySQL · 引擎特性 · InnoDB奔溃恢复
前言 数据库系统与文件系统最大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的奔溃恢复机制来保证.本 ...
- 优秀开源项目之四:CrashRptProbe,查询程序奔溃的利器
1.背景: 在开发人员进行项目开发和调试代码时,有一个非常困扰的问题,就是程序在调试运行过程中会莫名其妙地异常退出.由于导致异常退出的问题非常多,因此在面对这种无任何提示的异常退出时,开发人员会非常无 ...
- paip.超实用 360浏览器最近频繁奔溃解决流程.
paip.超实用 360浏览器最近频繁奔溃解决流程. 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.n ...
- Android中获取当前位置的使用步骤
在Android中得到当前位置的步骤 1.在AndroidManifest.xml中声明权限 android.permission.ACCESS_FINE_LOCATION(或者android.per ...
随机推荐
- push以及pop,shift,unshift
压入数组:往数组后面加:push arr.push()返回值为添加后数组的长度 往数组前面加:unshift arr.unshift()返回值为添加后数组的长度 拿出数组:拿掉 ...
- mapreduce 依赖组合
mport java.io.IOException;import java.util.StringTokenizer; import org.apache.hadoop.conf.Configurat ...
- java 使用对象
class XiyoujiRenwu { float height,weight; String head, ear; void speak(String s) { head="歪着头&qu ...
- discuz 添加板块失败解决办法
最近把服务器环境升了下级,发现discuz后台添加栏目添加不了了,数据库没变,源代码没变,就突然添加不了了.刚开始添加1个板块成功了,再添加就怎么也添不进去了.只是页面刷新了一下,啥提示没有. 经过一 ...
- 迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上)【转载】
转自: DBAplus社群 http://www.toutiao.com/m5762164771/ 迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上) - 今日头条(TouTiao.com ...
- zf-关于注册码过期
Webroot-index.jsp下 少写了个函数 导致登陆进去不能弹出注册码过期的对话框,函数如下 window.onload = function() { <ww:iterator valu ...
- wireshark 使用技巧
Wireshark使用技巧-GeoIP显示IP地理位置 在使用Wireshark时,有的时候需要知道抓取的报文中某个IP地址的具体地理位置,笨一点的方法是将IP地址复制,然后通过一些软件或 ...
- cakephp , the subquery
Cakephp 框架帮我们做了很多的工作,的确省了我们很多工作,提高了效率. 但是,碰到一些比较复杂的查询时,还是有些问题,官方的cookbook api 有说明一些详细的用法,但感觉还是不太够,有些 ...
- Android----ListView入门知识--各种Adapter配合使用
引自:http://www.cnblogs.com/playing/archive/2011/03/21/1990555.html 在android开发中ListView是比较常用的组件,它以列表的形 ...
- PHP :Call to undefined function mysql_connect()
今天配置apache ,php,mysql 的时候,一直报(Call to undefined function mysql_connect()),PHP一直连接不上数据库,从网上查,答案也都是千篇一 ...