Android studio中NDK开发(四)——使用addr2line分析Crash日志

本文介绍了如何在Android Studio的NDK开发中,通过addr2line工具分析Crash日志,从backtrace中提取错误信息,转换地址以定位错误位置。详细步骤包括提取backtrace、关注so库信息、使用addr2line转换地址,并提供了实际操作示例。
摘要由CSDN通过智能技术生成

一、前言

在NDK开发中经常会出现应用Crash的情况,而JNI层的报错信息,不像Java层报错信息那样可以直接在日志中看到错误的行数,JNI层中出现的错误直接看根本定位不到错误的位置。通常来说,JNI报的基本都是堆栈信息,需要NDK的一些工具进行地址转换,转换后即可看到错误的位置。这些地址转换的工具有addr2line、ndk-stack等,我比较喜欢addr2line,平时也用这个工具进行调试。

二、分析

错误信息如下:

  A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
  A/DEBUG: Build fingerprint: 'xiaomi/mido/mido:7.0/NRD90M/V10.1.1.0.NCFCNFI:user/release-keys'
  A/DEBUG: Revision: '0'
  A/DEBUG: ABI: 'arm'
  A/DEBUG: pid: 29290, tid: 29290, name: e.hasee.ndkdemo  >>> com.example.hasee.ndkdemo <<<
  A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
  A/DEBUG:     r0 00000000  r1 0000726a  r2 00000006  r3 00000008
  A/DEBUG:     r4 f6cbc590  r5 00000006  r6 f6cbc538  r7 0000010c
  A/DEBUG:     r8 12e45dc0  r9 f3f88000  sl ff90e8ec  fp f3f88000
  A/DEBUG:     ip 00000058  sp ff90e5f8  lr f5c3a2c7  pc f5c3cb48  cpsr 200f0010
  A/DEBUG: backtrace:												//堆栈信息,只需要关注这部分就好
  A/DEBUG:     #00 pc 00049b48  /system/lib/libc.so (tgkill+12)
  A/DEBUG:     #01 pc 000472c3  /system/lib/libc.so (pthread_kill+34)
  A/DEBUG:     #02 pc 0001d565  /system/lib/libc.so 
  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值