当前位置: 首页 > article >正文

【GNU】addr2line

1、什么是addr2line

addr2line 是 GNU Binutils 工具集中的一个命令行工具,用于将程序中的地址转换为源代码中的文件名和行号。它在调试和问题定位中非常有用,尤其是在处理崩溃或 core dump 时。

2、常用选项

选项功能
-e <file>指定目标文件(可执行文件或库)。
-f显示函数名。
-C解码 C++ 函数名(即去除名称修饰)。
-s静默模式(仅显示文件名和行号)。
-p输出文件名和行号时包含完整路径(方便定位)。

3、 常用的功能

3.1 定位单个地址

假设有一个 C 程序:

#include <stdio.h>
void my_function() {
    printf("Hello, addr2line!\n");
}

int main() {
    my_function();
    return 0;
}

 编译时加入调试信息:

gcc -g -o demo demo.c

 然后使用 objdump 获取函数地址:

objdump -t demo | grep my_function
0000000000401136 g     F .text  0000000000000016 my_function

 使用 addr2line 将地址转换为文件名和行号:

addr2line -e demo 0x401136
/path/to/demo.c:3

3.2 函数调用栈地址解析

假设有一个崩溃堆栈,如下所示:

Segmentation fault at address 0x401136

 可以使用 addr2line 定位问题:

addr2line -e demo -f -C 0x401136
my_function
/path/to/demo.c:3

3.3 批量解析多个地址

如果有多个地址可以一起解析:

addr2line -e demo 0x401136 0x40115f

http://www.kler.cn/a/404999.html

相关文章:

  • javaScript交互案例
  • Docker3:docker基础1
  • Linux 服务器使用指南:从入门到登录
  • 【Maven】IDEA创建Maven项目 Maven配置
  • Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现
  • 天润融通携手挚达科技:AI技术重塑客户服务体验
  • 大前端的发展过程
  • 图像处理 之 凸包和最小外围轮廓生成
  • 开发体育赛事直播平台防止数据泄露的技术安全方案
  • Redis性能优化的18招
  • 掌握Golang中的数据竞争检测:runtime/race包全面教程
  • 探索Linux内核中的Runqueue:从O(n)到O(1)的演进与负载均衡应用
  • 卷积神经网络(CNN)中的权重(weights)和偏置项(bias)
  • qt连接postgres数据库时 setConnectOptions函数用法
  • Docker部署Canal实现将Mysql数据同步至ES
  • 机器学习笔记——KNN(K-Nearest Neighbors,K 近邻算法)
  • 【MySQL的故事】认识MySQL中的聚合函数以及聚合函数的作用,拿捏这些细节
  • Idea集成ApiFox插件
  • Percona XtraBackup备份docker版本mysql 5.7
  • 趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
  • 什么是反向 DNS 查找以及它的作用是什么?
  • Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计
  • Linux nftables实现内外网配置
  • 算法训练(leetcode)二刷第二十九天 | 62. 不同路径、63. 不同路径 II、343. 整数拆分、96. 不同的二叉搜索树
  • C++线程基础使用方法
  • 如何利用谷歌浏览器提高网络安全