美文网首页
addr2line分析native、kernel异常命令

addr2line分析native、kernel异常命令

作者: 锄禾豆 | 来源:发表于2022-02-04 09:27 被阅读0次

简介

在抓取调堆栈时Java层的堆栈本身就是显示函数名与行数,而对于native和kernel层的则是函数地址,需要借助addr2line来进行转换,因为addr2line可以将函数地址解析为函数名。

查看系统32位或64位方法

adb shell getprop ro.product.cpu.abi

32位
armeabi-v7a

64位
arm64-v8a

Native地址转换
从系统对应源码中找到对应的addr2line及so

64位:

cd prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
./aarch64-linux-android-addr2line -f -C -e libxxx.so  <addr1> <addr2> ...

32w位:

cd /prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin
./arm-linux-androideabi-addr2line -f -C -e libxxx.so  <addr1> <addr2> ...

Kernel地址转换
注:
一定要找对应的系统可执行文件和vmlinux

1)获取函数名的符号地址,以el1_da为例

64位:
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-gnu-6.3.1/bin/aarch64-linux-gnu-nm out/target/product/tb8788p1_64_wifi/obj/KERNEL_OBJ/vmlinux | grep el1_da

结果:
ffffff80080832ac t el1_da

32位:
prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-nm  out/target/product/iot_1_item/obj/KERNEL_OBJ/vmlinux | grep el1_da

2)计算地址。
例如:[<ffffff9d17e832d0>] el1_da+0x24/0x3c
则计算后的地址ffffff80080832ac + 24 = 目标地址

prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -Cfe out/target/product/tb8788p1_64_wifi/obj/KERNEL_OBJ/vmlinux FFFFFF80080832D0

结果:
el1_ia
kernel-4.14/arch/arm64/kernel/entry.S:606

参考学习

https://www.jianshu.com/p/c2e2b8f8ea0d
http://gityuan.com/2017/09/02/addr2line/

相关文章

  • addr2line分析native、kernel异常命令

    简介 查看系统32位或64位方法 Native地址转换从系统对应源码中找到对应的addr2line及so 64位:...

  • GNU Binutils之addr2line命令

    本文主要介绍addr2line命令的用法。 一、命令介绍 addr2line命令是GNU Binutils工具集中...

  • 利用addr2line分析堆栈异常

    最近在调屏过程中遇到开不了机的情况,卡在Android启动过程中,从日志分析只能看到堆栈信息,无法看到具体报错行,...

  • React Native 项目目录结构分析

    项目结构分析 我们使用命令创建一个新的React Native项目: React Native开发常用命令可以戳这...

  • macvlan源码分析

    本文主要分析macvlan代码实现。分为如下几部分a. 分析命令行参数如何传递b. 分析kernel端代码如何解析...

  • addr2line命令

    在Linux下写C/C++程序的程序员,时常与CoreDump相见。在内存越界访问,收到不能处理的信号,除零等错误...

  • JNI异常

    JNI异常 JNI允许native方法引发任意Java异常。native代码还可以处理未解决的Java异常。未处理...

  • 查看PID的最大取值范围

    命令:cat /proc/sys/kernel/pid_max

  • Vmware 虚拟Linux ,安装vmware-tools

    确保Kernel、Kernel-devel、Kernel-headers版本一致 如果两个命令得到的版本号一致,那...

  • 记录一次Kernel panic异常分析

    我司做的是Android工控机产品,最近合作客户的机器遇到一个问题,有台故障机运行过程中不定时重启,分析过程具体如...

网友评论

      本文标题:addr2line分析native、kernel异常命令

      本文链接:https://www.haomeiwen.com/subject/uiwqkrtx.html