linux 内核 addr2line,介绍addr2line调试命令

linux 内核 addr2line,介绍addr2line调试命令用 addr2line 可以将函数地址解析为函数名 在抓取调堆栈时 Java 层的堆栈本身就是显示函数名与行数 这个不需要转换 但对于 native 和 kernel 层的则是函数地址 需要借助 addr2line 来进行转换 接下来分析介绍一下这个地址转换方法一 Native 地址转换首先获取 symbols 表 要找到对应的版本的 symbols 以及对应版本的 addr2line 这样才能确保完全匹配 然后执行如下命

用addr2line可以将函数地址解析为函数名,在抓取调堆栈时Java层的堆栈本身就是显示函数名与行数,这个不需要转换,但对于native和kernel层的则是函数地址,需要借助addr2line来进行转换。 接下来分析介绍一下这个地址转换方法

一、Native地址转换

首先获取symbols表,要找到对应的版本的symbols,以及对应版本的addr2line,这样才能确保完全匹配。 然后执行如下命令,即可转换函数名:

64位:cd prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin

./aarch64-linux-android-addr2line -f -C -e libxxx.so …

32位:cd /prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin

./arm-linux-androideabi-addr2line -f -C -e libxxx.so …

二、Kernel地址转换

(1)首先,获取符号地址,比如获取epoll_wait的符号地址:prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-nm out/target/product/cancro/obj/KERNEL_OBJ/vmlinux |grep epoll_wait

该命令执行后,可获取sys_epoll_wait命令的符号地址,如下c02b2f28 T sys_epoll_wait

(2)然后,计算地址

例如 [<0000000000000000>] SyS_epoll_wait+0x2a0/0x324

则计算后的地址c02b2f28 + 2a0 = 目标地址。而对于kernel来说都是通过vmlinux来获取的,这时再执行命令可转换函数名./aarch64-linux-android-addr2line -Cfe /out/target/product/cancro/obj/KERNEL_OBJ/vmlinux [目标地址]

(3)实例aarch64-linux-android-nm out/target/product/gemini/obj/KERNEL_OBJ/vmlinux | grep binder_thread_read

aarch64-linux-android-addr2line -f -C -e out/target/product/gemini/obj/KERNEL_OBJ/vmlinux ffffffc000aa8cb4

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221375.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午6:15
下一篇 2026年3月17日 下午6:16


相关推荐

  • 单细胞测序流程(单细胞rna测序)

    系列文章目录文章目录 单细胞测序流程(一)简介与数据下载 单细胞测序流程(二)数据整理 单细胞测序流程(三)质控和数据过滤——Seurat包分析,小提琴图和基因离差散点图 单细胞测序流程(四)主成分分析——PCA 单细胞测序流程(五)t-sne聚类分析和寻找marker基因 单细胞测序流程(六)单细胞的细胞类型的注释 单细胞测序流程(七)单细胞的细胞类型轨迹分析单细胞测序流程(八)单细胞的marker基因转化和​GO富集分析 单细胞测序流程(九)单细胞的GO圈图

    2022年4月16日
    144
  • Android Studio安装及环境配置教程

    Android Studio安装及环境配置教程前言 首先需要确定好电脑是否有安装 java 环境 即是否安装有 JDK 验证方法 直接电脑桌面 win R 输入 cmd 然后在黑窗口中分别输入 java javac javadoc java version enter 键 注意是输入一个指令按一次 enter 键 如果成功的有输出 说明 java 环境已经有安装过且安装成功 如果不成功则需要重新安装 JAVAJDK 并完成 java 环境的配置 相关

    2026年3月19日
    3
  • ArcGIS二次开发基础教程(03):保存文档和导出地图

    ArcGIS二次开发基础教程(03):保存文档和导出地图ArcGIS二次开发基础教程(03):保存文档和导出地图保存文档保存://这里的path为全局变量在打开文件获添加数据时赋值原路径//判断打开文件是否为mxd文件是则保存不是则另存为if(System.IO.File.Exists(path.Remove(path.IndexOf(‘.’))+”.mxd”)){//对于已打开的mxd文档保存在原路径//…

    2022年7月23日
    23
  • 省下 3000 万?字节版 Manus 突然免费上线,全网都在求教程

    省下 3000 万?字节版 Manus 突然免费上线,全网都在求教程

    2026年3月15日
    2
  • libtorch-resnet18

    libtorch-resnet18与大家分享一下自己在学习使用libtorch搭建神经网络时学到的一些心得和例子,记录下来供大家参考首先我们要参考着pytorch版的resnet来搭建,这样我们可以省去不必要的麻烦,上代码:1、首先是pytorch版残差模块classResidualBlock(nn.Module):def__init__(self,inchannel,outchannel,stride=1,shortcut=None):super(ResidualBlock,self).__

    2022年5月23日
    39
  • 用好 Claude-Flow ,你就超越了 80% 的牛马(模式一:单一功能开发)

    用好 Claude-Flow ,你就超越了 80% 的牛马(模式一:单一功能开发)

    2026年3月16日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号