Android Navitve Crash 定位

本文只适应于Android系统级别的开发,记录一下,没有源码不行。
异常日志如下:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'LeEco/LeMax2_CN/le_x2:6.0.1/FEXCNFN5902012151S/LE_X820_STATIONARY:user/release-keys'
Revision: '0'
ABI: 'arm64'
pid: 14501, tid: 14554, name: Thread-8804  >>> com.letv.android.filemanager <<<
signal 7 (SIGBUS), code 2 (BUS_ADRERR), fault addr 0x7f6d723514
    x0   0000000000000001  x1   0000007f6c7c6820  x2   0000007f6b586948  x3   0000000000000001
    x4   0000007f6b586950  x5   0000000000000000  x6   0000000000000001  x7   0000000000000001
    x8   0000007f8ba56f20  x9   00000000ffffffff  x10  0000000000000001  x11  00000000d000000d
    x12  0000000000003800  x13  0000007f8bbdc000  x14  0000007f6c63b7e0  x15  0000000000000001
    x16  0000007f8bf56e00  x17  0000007f8bf39cbc  x18  0000000000000004  x19  0000007f6c63b7e0
    x20  0000000000000000  x21  0000007f6c63b7e0  x22  00000000000d1be0  x23  0000000000000000
    x24  0000007f87437600  x25  0000000000000000  x26  0000007f6c63b818  x27  0000007f6d723510
    x28  0000000012e72580  x29  0000007f6b5868d0  x30  0000007f8ba62f1c
    sp   0000007f6b5868d0  pc   0000007f8ba62f28  pstate 0000000060000000
    v0   a7e88583e680bfe69ca4e5b1b7e62f6b  v1   000000000000003a6b70612e91a2e986
    v2   2f302f646574616c756d652f65676172  v3   70612f79654b72657473614d69666957
    v4   00000000000000000000000000000000  v5   00000000000000000000000000000000
    v6   00000000000000000000000000000000  v7   e680bfe69ca4e5b1b7e62f6b70612f79
    v8   00000000000000000000007f6b5873a8  v9   00000000000000000000007f87093f18
    v10  00000000000000000000007fdc2cfd60  v11  00000000000000000000007fdc2cff48
    v12  0000000000000000000000556dc322b8  v13  00000000000000000000007fdc2d00e8
    v14  00000000000000000000000000000004  v15  00000000000000000000000000000000
    v16  40100401401004014010040140100401  v17  a00a000080081000aa008810aaaaa800
    v18  80200802000000008000080000100000  v19  000000000000000000000000ebad8083
    v20  12e993a012e9937012e9934012e8efd0  v21  000000000000000000000000ebad8085
    v22  000000000000000000000000ebad8086  v23  000000000000000000000000ebad8087
    v24  00000000000000000000000000000564  v25  00000000000000000000000000000000
    v26  0000000000000000ffffffffffffffff  v27  000000000000000000000000ebad808b
    v28  000000000000000000000000ebad808c  v29  000000000000000000000000ebad808d
    v30  000000000000000000000000ebad808e  v31  000000000000000000000000ebad808f
    fpsr 00000010  fpcr 00000000

backtrace:
    #00 pc 0000000000026f28  /system/lib64/libandroidfw.so (_ZN7android8ResTable11addInternalEPKvmS2_mib+192)
    #01 pc 0000000000019424  /system/lib64/libandroidfw.so (_ZNK7android12AssetManager20appendPathToResTableERKNS0_10asset_pathEPm+592)
    #02 pc 0000000000019a44  /system/lib64/libandroidfw.so (_ZNK7android12AssetManager11getResTableEb+216)
    #03 pc 00000000000db988  /system/lib64/libandroid_runtime.so
    #04 pc 000000000222049c  /system/framework/arm64/boot.oat (offset 0x2219000)

出错的调用栈是backtrace下面几行,第三列的长串数字对应的出错地址:

    #00 pc 0000000000026f28  /system/lib64/libandroidfw.so (_ZN7android8ResTable11addInternalEPKvmS2_mib+192)
    #01 pc 0000000000019424  /system/lib64/libandroidfw.so (_ZNK7android12AssetManager20appendPathToResTableERKNS0_10asset_pathEPm+592)
    #02 pc 0000000000019a44  /system/lib64/libandroidfw.so (_ZNK7android12AssetManager11getResTableEb+216)
    #03 pc 00000000000db988  /system/lib64/libandroid_runtime.so
    #04 pc 000000000222049c  /system/framework/arm64/boot.oat (offset 0x2219000)

然后进入Android源码out/target/product/phone_name/下面执行如下命令:

aarch64-linux-android-addr2line -fC -e symbols/system/lib64/libandroidfw.so 0000000000019a44
aarch64-linux-android-addr2line -fC -e symbols/system/lib64/libandroidfw.so 0000000000019424
aarch64-linux-android-addr2line -fC -e symbols/system/lib64/libandroidfw.so 0000000000026f28

即可看到对应源文件的出错位置,aarch64-linux-android-addr2line工具顾名思义就是addr to line(地址转换成代码行)三条命令的执行结果分别如下,调用顺序从上到下:

android::AssetManager::getResTable(bool) const
/home/letv/jenkins_slave/workspace/X2-SHIPPING-DB-WNETCOM/Android/frameworks/base/libs/androidfw/AssetManager.cpp:738 (discriminator 1)

android::AssetManager::appendPathToResTable(android::AssetManager::asset_path const&, unsigned long*) const
/home/letv/jenkins_slave/workspace/X2-SHIPPING-DB-WNETCOM/Android/frameworks/base/libs/androidfw/AssetManager.cpp:689

android::ResTable::addInternal(void const*, unsigned long, void const*, unsigned long, int, bool)
/home/letv/jenkins_slave/workspace/X2-SHIPPING-DB-WNETCOM/Android/frameworks/base/libs/androidfw/ResourceTypes.cpp:3728
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值