arm-eabi-addr2line android应用崩溃的调试方法
来源:互联网 发布:网络散布谣言怎么定罪 编辑:程序博客网 时间:2024/04/29 19:56
http://changxianli6121.blog.163.com/blog/static/56392130201312652555385/
1.将ndk中的arm-linux-androideabi-addr2line可执行文件的路径加入配置文件~/.bashrc中,例如:
export PATH=$PATH:~/dlna/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin
2.使配置生效:source ~/.bashrc
3.使用工具。例如:arm-linux-androideabi-addr2line -C -f -e ~/workspace/DLNA/libs/armeabi/libctrlpt.so 0003deb4
其中,0003deb4为堆栈信息中pc的值。
android应用崩溃的调试方法
有两种方法可以分析 crash 的堆栈信息
1 google提供了一个python脚本,可以从
http://code.google.com/p/android-ndk-stacktrace-analyzer/
下载这个python脚本,然后使用 adb logcat -d > logfile 导出 crash 的log,
使用 arm-eabi-objdump 位于build/prebuilt/linux-x86/arm-eabi-4.2.1/bin下面
把so或exe转换成汇编代码,如:arm-eabi-objdump -S mylib.so > mylib.asm,
使用脚本
python parse_stack.py <asm-file> <logcat-file>
2 直接使用NDK下面的arm-linux-androideabi-addr2line
(D:\android-ndk-r8\toolchains\arm-linux-
androideabi-4.4.3\prebuilt\windows\bin\arm-linux-androideabi-addr2line.exe)
例如:arm-linux-androideabi-addr2line -C -f -e libxxx.so 0x#####(address)
android调试工具addr2line使用补充
使用addr2line追踪自有动态库(so文件)的bug, 补充:
解决出现 ??:0 , 没法展示源代码行数的问题
在Android.mk 文件中:
- LOCAL_CFLAGS
:= -D__STDC_CONSTANT_MACROS -Wl,-Map=test.map -g
补充2个编译参数
增加gcc警告和调试标志
arm-linux-androideabi-addr2line -C -f -e /项目目录/obj/local/armeabi/libfaa_jni.so 0024362e
tip: 1,注意调试文件的位置在obj目录下,并非libs目录下生成的so文件
还有:
在jni/目录下增加Application.mk 文件, 修改为debug 模式,进行调试 APP_OPTIM := debug
具体application.mk 文件的配置见: http://blog.csdn.net/weidawei0609/article/details/6561280
其他参考:
http://blog.csdn.net/dysh1985/article/details/7558148
http://www.cnblogs.com/TerryBlog/archive/2012/02/23/2364862.html
- arm-eabi-addr2line android应用崩溃的调试方法
- arm-eabi-addr2line android应用崩溃的调试方法
- android-arm-eabi-addr2line工具
- Android Crash分析工具arm-eabi-addr2line
- arm-eabi-addr2line工具
- arm-eabi-addr2line
- 使用arm-eabi-addr2line工具跟踪Android调用堆栈
- 利用addr2line调试崩溃的bug
- ndk工具使用之arm-eabi-addr2line
- arm-eabi-addr2line 使用解析crash位置
- 使用arm-eabi-addr2line, ndk-stack工具跟踪Android调用堆栈
- 使用arm-eabi-addr2line, ndk-stack工具跟踪Android调用堆栈
- 使用arm-eabi-addr2line, ndk-stack工具跟踪Android调用堆栈
- android 调试中 addr2line 命令的使用
- android 调试中 addr2line 命令的使用
- android 调试中 addr2line 命令的使用
- android 调试中 addr2line 命令的使用
- Android 调试中 addr2line 工具的使用
- Python GET或者POST 请求
- C++primer plus第六版课后编程题答案18.3
- java重构学习3:以查询代替临时变量(Replace Temp with Query)
- ubuntu14.10+QT4编写ARM9(mini2440)应用的配置与安装
- 关于win8.1 安装android驱动失败的缘由
- arm-eabi-addr2line android应用崩溃的调试方法
- java equals hashCode
- 碎片话的经济
- Jenkins进阶系列之——14配置Jenkins用户和权限
- php 封装PDO类
- 循环水处理剂:电厂循环水处理剂介绍
- android Service stopSelf(int startId)与stopSelf()的区别
- PostgreSQL JDBC 源码分析之fetchSize
- C语言数据库连接池libzdb