先上程序


#include <stdio.h>
int divide(int a, int b) {return a/b;
}int main() {fprintf(stdout, "input value\n");int a = 3, b = 0;int div = divide(a, b);fprintf(stdout, "div value: %d\n", div);return 0;
}

首先执行:

ubuntu:~/CPPWorkSpace/BasicCPP$ g++ -g main.cpp -o main

输出中包含一个文件  main, 如下图所示:

然后过滤一下:

ubuntu:~/CPPWorkSpace/BasicCPP$ dmesg | grep main

得到结果:

[    0.246864] PCI: MMCONFIG for domain 0000 [bus 00-7f] at [mem 0xf0000000-0xf7ffffff] (base 0xf0000000)
[    0.332945] PCI: MMCONFIG for domain 0000 [bus 00-7f] at [mem 0xf0000000-0xf7ffffff] (base 0xf0000000)
[    0.357689] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-7e])
[    0.387227] iommu: Default domain type: Translated
[    0.429714] NetLabel:  domain hash size = 128
[    1.182184] platform eisa.0: EISA: Cannot allocate resource for mainboard
[    2.655487] intel_rapl_common: Found RAPL domain package
[    2.655489] intel_rapl_common: Found RAPL domain core
[    2.655489] intel_rapl_common: Found RAPL domain uncore
[    2.655491] intel_rapl_common: Found RAPL domain dram
[ 7860.005797] traps: main[4727] trap divide error ip:55d8fcb1a6d8 sp:7ffd1c2168a0 error:0 in main[55d8fcb1a000+1000]

注意IP 字段符号,代表的是出错的位置地址

当前的执行环境是Ubuntu18.04 ,其实地址有偏移 ,所以要做作差

IP 地址减去后面的方框中地址,得到最终位置地址

55d8fcb1a6d8  —  55d8fcb1a000 =  6d8  (注意是十六进制)

所以写法为:0x6d8 

ubuntu:~/CPPWorkSpace/BasicCPP$ addr2line -e main 0x6d8 -f -a -p -C

最终定位到如下的行数

0x00000000000006d8: divide(int, int) at /home/mi/CPPWorkSpace/BasicCPP/main.cpp:4

定位到函数和对应的行数

Linux 命令之 addr2line相关推荐

  1. Linux命令大全,从A到Z,2023年收藏大吉!

    本文为Linux命令大全,从A到Z都有总结,建议大家收藏以便查用,或者查漏补缺! A 命令 描述 access 用于检查调用程序是否可以访问指定的文件,用于检查文件是否存在 accton 用于打开或关 ...

  2. linux 命令中英文对照,收集

    linux 命令英文全文 Is Linux CLI case-sensitive? The answer is, yes. If you try to run LS instead of ls, it ...

  3. Linux命令大全,从A到Z都有总结,封神之作!

    本文为Linux命令大全,从A到Z都有总结,建议大家收藏以便查用,或者查漏补缺! A 命令 描述 access 用于检查调用程序是否可以访问指定的文件,用于检查文件是否存在 accton 用于打开或关 ...

  4. 作为一个java程序员,常用的linux命令(越攒越多)

    本篇记录我在工作中不断遇到的常用的linux命令,并进行总结,时常更新! 1. 升级服务时先停止服务,然后进行替换 linux中杀进程时候,如果你是知道它所占用的端口号的话,可以通过 netstat ...

  5. Linux命令行与命令

    Linux命令行与命令 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux的命令是很重要的工具,也往往是初学者最大的瓶颈. ...

  6. sed linux 命令

    sed linux 命令 1. Sed简介 2. 定址 3. Sed命令 4. 选项 5. 元字符集 6. 实例 7. 脚本 1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把 ...

  7. linux 命令行叫dos,利用shell编程实现DOS风格的Linux命令行

    如果你是习惯于Windows命令提示符的IT人,当你第一次使用Linux命令行时,一定会感到无所适从.你所熟悉的DOS命令再Linux中基本不存在.摆在你面前的是一大堆要记背的命令. 一种替代方案是利 ...

  8. linux 命令删除命令,Linux 命令之删除命令

    在Linux下删除文件用rm命令,具体用法如下: rm [选项] 文件 选项说明: -f -force 忽略不存在的文件,强制删除,无任何提示 -i --interactive 进行交互式地删除 -r ...

  9. 你知道吗?Linux命令竟如此简单!

    你知道吗?Linux命令竟如此简单! 我Linux安完了,如何快速入门? 1.进入终端 2.好了,入门完了 咳 咳 开个玩笑 2.1查看磁盘容量 2.2新建 2.3查看&删除 2.5解压&am ...

最新文章

  1. Windows核心编程 第五章 作业(上)
  2. windoes windoes server 上安装mysql(MSI安装包安装、压缩包安装)
  3. 怎么设置tomcat管理员的用户名和密码
  4. tensorflow log 日志级别设置
  5. everything搭配什么软件_带你飞起来的好工具Everything,极速找到你所要的文件
  6. html5跟html4有什么区别,Html5和Html4的区别
  7. 前端开发-跨浏览器测试工具
  8. 300+篇CVPR 2020代码开源的论文(转载)
  9. JanusGraph学习笔记
  10. linux安装杰奇远程采集,杰奇linux远程采集,采集器网站分离
  11. 04/31Day 孤尽训练营笔记分享
  12. .xyz让域名应用充满艺术感
  13. Linux tty串口测试程序
  14. Linux下磁盘常见错误分析与检测工具使用
  15. 如何设置IIS中的HTTPS服务
  16. java1.8 lamda表达式
  17. 力扣动态规划入门21天刷题计划(共计46题)
  18. 黑马python之旅01
  19. 比较全面的随机森林算法总结
  20. 新手教学看eMule 0.50a Xtreme 8.0设置

热门文章

  1. 上班族计算机学哪个专业好,上班族深圳自考选哪个专业好?
  2. OpenJudge计算概论-鸡尾酒疗法
  3. 游戏开发初学者的10个建议
  4. 【GoogLeNet】海洋生物识别
  5. 大数据征信助力金融科技腾飞
  6. 大数据征信面临的挑战与对策
  7. 【英语】大学英语CET考试,写作部分(论述文+应用文,6篇范文)
  8. BUUCTF:很好的色彩呃?
  9. 简单的android ant 批量打包
  10. 华米OV们2020渡劫