Android中使用addr2line来分析出错信息
来源:互联网 发布:刀剑神域第二季 知乎 编辑:程序博客网 时间:2024/06/07 08:49
系统:Ubuntu12.04
手机系统:Android5.0
在Android的开发过程中有会有很多的bug,利用工具可以很好的帮忙我们来分析问题,特别是一些系统报错的信息中会打印出堆栈,我们可以根据这个堆栈报错信息定位是哪个文件哪行代码出的错。下面就把我使用addr2line的过程记录下来
首先是在电脑上编译出一个eng版本,烧录到手机,在测试或调试的过程中出错了,查看出错信息如下:
#01 pc 000187e3 /system/lib/libpng.so (png_read_IDAT_data+210)
出错代码信息可以在电脑上(在你编译系统的android目录)查找:libpng.so
查找结果如下
- dzt@dzt-All-Series:~/D/dzt/workarea/7501_mp_l/android_mtk_l6752_lwt_mp$ find -name libpng.so
- ./out/target/product/gionee6752_lwt_l/obj_arm/lib/libpng.so
- ./out/target/product/gionee6752_lwt_l/obj_arm/SHARED_LIBRARIES/libpng_intermediates/LINKED/libpng.so
- ./out/target/product/gionee6752_lwt_l/obj/lib/libpng.so
- ./out/target/product/gionee6752_lwt_l/obj/SHARED_LIBRARIES/libpng_intermediates/LINKED/libpng.so
- ./out/target/product/gionee6752_lwt_l/symbols/system/lib/libpng.so
- ./out/target/product/gionee6752_lwt_l/symbols/system/lib64/libpng.so
- ./out/target/product/gionee6752_lwt_l/system/lib/libpng.so
- ./out/target/product/gionee6752_lwt_l/system/lib64/libpng.so
- ./out/target/product/gionee_backup/symbols/system/lib/libpng.so
- ./out/target/product/gionee_backup/symbols/system/lib64/libpng.so
- dzt@dzt-All-Series:~/D/dzt/workarea/7501_mp_l/android_mtk_l6752_lwt_mp$
./out/target/product/gionee6752_lwt_l/symbols/system/lib/libpng.so
./out/target/product/gionee6752_lwt_l/symbols/system/lib64/libpng.so
这样就可以使用addr2line来查找出错的文件行数,有一点需要注意,你烧录到手机上的版本和你电脑上的版本要一致,这个数据才是准确的。
- dzt@dzt-All-Series:~/D/dzt/workarea/7501_mp_l/android_mtk_l6752_lwt_mp$ addr2line -e ./out/target/product/gionee6752_lwt_l/symbols/system/lib/libpng.so 000187e3
- /home/dzt/D/dzt/workarea/7501_mp_l/android_mtk_l6752_lwt_mp/external/libpng/pngrutil.c:3995
- dzt@dzt-All-Series:~/D/dzt/workarea/7501_mp_l/android_mtk_l6752_lwt_mp$ addr2line -e ./out/target/product/gionee6752_lwt_l/symbols/system/lib64/libpng.so 000187e3
- /home/dzt/D/dzt/workarea/7501_mp_l/android_mtk_l6752_lwt_mp/external/libpng/pngrtran.c:105
- dzt@dzt-All-Series:~/D/dzt/workarea/7501_mp_l/android_mtk_l6752_lwt_mp$
- dzt@dzt-All-Series:~/D/dzt/workarea/7501_mp_l/android_mtk_l6752_lwt_mp$ addr2line -e ./out/target/product/gionee6752_lwt_l/system/lib/libpng.so 000187e3
- ??:0
- dzt@dzt-All-Series:~/D/dzt/workarea/7501_mp_l/android_mtk_l6752_lwt_mp$
这样你就能通过打印的堆栈信息来查找出错的那行代码,更有利于我们定位问题。
这里介绍一种打印堆栈的方法
打开调用栈的方法,在认为会出错的地方自己抛出一个空指针的异常抓获再打印出堆栈
public void setSpeakerphoneOn(boolean on){
IAudioService service = getService();
try {
throw new NullPointerException("the debug exception for speaker");
service.setSpeakerphoneOn(on);
} catch (RemoteException e) {
Log.e(TAG, "Dead object in setSpeakerphoneOn", e);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
转自:http://blog.csdn.net/deng0zhaotai/article/details/43021679
- Android中使用addr2line来分析出错信息
- Android中使用addr2line来分析出错信息
- Android中使用addr2line来分析native信息
- android 调试中 addr2line 命令的使用
- android 调试中 addr2line 命令的使用
- android 调试中 addr2line 命令的使用
- android 调试中 addr2line 命令的使用
- Android 调试中 addr2line 工具的使用
- Android 调试中 addr2line 工具的使用
- android addr2line使用
- 使用addr2line分析代码错误
- Eclipse中LogCat打印出错信息分析
- Android Crash分析工具arm-eabi-addr2line
- android调试工具addr2line使用补充
- 使用C语言中的宏来定位出错信息
- addr2line解析栈信息
- 在linux中使用shell来分析统计日志中的信息
- 使用 dmesg 和 addr2line 分析程序 core 原因
- Pycharm及python安装详细教程
- Day13
- javascript
- QWebView到QWebEngineView
- winfrom微信支付dome完整实例
- Android中使用addr2line来分析出错信息
- C++之static、const、static const修饰符
- switch...default
- angular 的 下拉加载
- SAP作业价格计算
- cscope file does not exist 错误解决办法
- Nepire的校OJ入门题解—17蓝桥选拔篇(三)
- SpringCloud网关Zuul
- 进程间通信(IPC)2 ------ 有名管道