首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux内核调试工具-addr2line和gdb定位问题

之前没有用过addr2line和gdb等内核调试工具定位问题代码,这里记录一下在将某个网络驱动从4.9内核移植到5.7内核时出现内核崩溃起不来的问题。...0000000000000000 [ 2.663929] x1 : 0000000000000000 x0 : 0000000000000000 [ 2.669191] Call trace: 1.通过addr2line...我用的编译链是aarch64-linux-gnu-,所以addr2line前面也要加这个前缀,这里一开始有个问题,我使用addr2line的时候没有输出代码行号,只输出两个"??"...-linux-gnu-addr2line -e vmlinux FFFF800011AD4328 net/ethtool/common.c:346 定位问题代码在net/ethtool/common.c...2.通过gdb定位 使用 aarch64-linux-gnu-gdb vmlinux 命令进入gdb调试行,输入以下命令 (gdb) b*(0xFFFF800011AD4328) Breakpoint

1.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用addr2line分析Native Crash

    常用的地址转换工具有addr2line、ndk-stack等,个人比较喜欢addr2line,所以接下来介绍下该工具的基本使用方式 addr2line简介 使用-h参数查看工具的可选参数配置 日常使用过程中...将C++源代码转换为C++ ABI标识符的过程称为mangle,相反的过程称为demangle 以Linux下的g++为例,每个方法都以_Z开头,比如_Z3foov就是函数foo(),v表示参数类型为void...其中NDK中的aarch64-linux-android-c++fil(和addr2line同一个目录)是专门用来支持Demangle的 addr2line使用示例 新建一个带C++的Android Studio...工程,主动创造一个native crash 启动app后如预期崩溃 抓到崩溃信息后,根据ABI找到相对应的addr2line工具和带符号表的so文件。...转换地址 aarch64-linux-android-addr2lin -C -f -e ${SO_PATH} ${Address} ${Address} ...

    2.1K10

    手把手教你用 addr2line 去 debug

    Linux 下写 C/C++ 程序的程序员,时常与 Core Dump 相见。...在内存越界访问,收到不能处理的信号,除零等错误出现时,我们精心或不精心写就的程序就直接一命呜呼了,Core Dump 是 Linux 仁慈地留下的程序的尸体,帮助程序员们解决了一个又一个问题。...有时配置不给力,Linux 直接毁尸灭迹,没有了 Core 文件;又有时,刚好磁盘空间不足,Core文件写不下了。没有 Core 文件的时候,如何知道程序在什么地方出错了呢?...使用 addr2line 就可以将 400534 地址转换出对应的文件及行数: 可知,程序在执行到 test.c 文件第五行的时候,执行出错,我们检查第五行代码。...return a / b; 这里除 0 肯定是不行的,addr2line 帮助我们找到了错误位置。

    4.6K10

    【Android NDK 开发】NDK CC++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )

    文章目录 一、从 Tombstone 报错日志中查找报错动态库 二、addr2line 命令行工具使用 64 位动态库使用的 aarch64-linux-android-addr2line.exe 工具...32 位动态库使用的 arm-linux-androideabi-addr2line.exe 工具 使用 addr2line 命令行工具分析动态库 Tombstone 报错信息日志文件被保存在了 /data...命令行工具进行确定 ; 二、addr2line 命令行工具使用 ---- 64 位动态库使用的 aarch64-linux-android-addr2line.exe 工具 在 Android NDK...开发中 , 使用的 addr2line 命令行工具是在 SDK 的 ndk-bundle\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86...-4.9\prebuilt\windows-x86_64\bin 目录下的 arm-linux-androideabi-addr2line.exe ; 使用 addr2line 命令行工具分析动态库

    1.2K10

    Go:配套工具addr2line,问题定位和性能优化利器

    addr2line的核心功能 addr2line 是Go语言配套工具集中的一个工具,它主要用于将程序的内存地址转换为对应的源代码位置。这在分析程序崩溃的堆栈跟踪或性能分析数据时非常有用。...通常,这些数据只提供内存地址,而通过使用 addr2line,开发者可以将这些地址映射回具体的代码行,从而更容易地理解和调试程序。...核心转储分析:分析核心转储文件时,addr2line 能帮助将地址映射回源代码,简化调试过程。...使用方法 使用 addr2line 的基本命令格式如下: bash go tool addr2line [options] binary 这里的 binary 是指已编译的Go程序的二进制文件。...后续我会继续研究,整理pprof和delve结合addr2line使用的文章,敬请关注!

    21610

    从源头解决内存泄漏问题:全面解析内存泄漏检测与修复技术

    addr2line有两种操作模式。在第一个命令行中,十六进制地址在命令行中指定,addr2line显示每个地址的文件名和行号。...在第二个命令中,addr2line从标准输入中读取十六进制地址,并在标准输出中打印每个地址的文件名和行号。在这种模式下,addr2line可以在管道中用于转换动态选择的地址。...注意:addr2line是将地址转换为文件号,而文件是保存在磁盘中的,程序运行的地址是在虚拟内存里面的(代码段),在高版本Linux 中可能无法解析出地址在文件哪个位置。...:133.2、方式二:采用宏定义Linux中有两个宏__FILE__、__func__和__LINE__,分别指示当前的文件名、函数名和行号,利用宏定义封装内存分配函数和释放函数。...= malloc(20);void *p3 = malloc(30);free(p3);free(p2);return 0;}3.5、方式五:__malloc_hook(不推荐)这种方式适用于比较老的Linux

    26320

    linux常用命令--开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题。本文将简单介绍一下这些命令。..._64-linux-gnu/libc.so.6 (0x00007f0621931000) /lib64/ld-linux-x86-64.so.2 (0x00007f0621cf6000)...定位crash问题--addr2line 有时候程序崩溃了但不幸没有生成core文件,是不是就完全没有办法了呢?还是cmdTest的例子。...7ffc230d9280 error:0 in cmdTest[400000+1000] 该信息记录了cmdTest运行出错的基本原因(divide error)和出错位置(40053b),我们使用addr2line...命令获取出错具体行号: addr2line -e cmdTest 40053b /home/hyb/practice/cmdTest.c:4 可以看到addr2line命令将地址(40053b)翻译成了文件名

    1.5K30

    BreakPad模拟Android native崩溃

    /configure && make 编译完以后会在生成两个可执行文件,分别是src/processor/minidump_stackwalk和src/tools/linux/dump_syms/dump_syms.../dump_syms # 此处需要注意的是,路径中不要指定具体执行文件名,否则会报找不到相关命令,例如${BREAKPAD_HOME}/src/tools/linux/dump_syms/dump_syms...发生时候的线程 0 libnative-lib.so + 0x325f4 //发生 crash 的位置和寄存器信息 有了具体的寄存器信息,我们进行符号解析(注意CPU是arm64)可以使用 ndk 中提供的addr2line...来根据地址进行一个符号反解的过程,该工具在 $NDK_HOME/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64...-linux-android-addr2line 进入addr2line所在目录输入(注意地址arm64用aarch64下的工具链解析arm64-v8a下的so文件) aarch64-linux-android-addr2line

    1.6K20

    linux后台开发常用调试工具

    eg:addr2line –e exe addr 其实gdb也有这个功能,不过addr2line的好处是,很多时候,bug很难重现,我们手上只有一份crash log。...这样就可以利用addr2line找到对应的代码行,很方便。 注意: 1. 该可执行程序用-g编译,使之带调试信息。 2. 如果crash在一个so里面,那addr2line不能直接给出代码行。...ldd(显示程序需要使用的动态库和实际使用的动态库) # ldd /bin/ls linux-gate.so.1 => (0xbfffe000) librt.so.1...libc.so.6 (0xb7dc3000) libpthread.so.0 => /lib/libpthread.so.0 (0xb7dab000) /lib/ld-linux.so...opannotate -s test : 以代码的角度,针对test进程显示检测结果 opannotate -s /lib64/libc-2.4.so : 以代码的角度,针对libc-2.4.so库显示检测结果 linux

    3.8K151
    领券