Linux下段错误信息的获取

1——段错误是什么?

一旦一个程序发生了越界访问,cpu 就会产生相应的保护,于是 (段错误)segmentation fault 就出现了。

所以段错误通常是指访问了不可访问的内存。

2——产生段错误常见的原因

1、访问不存在的内存地址

2、访问系统保护的内存地址

3、访问只读的内存地址

4、对空指针进行操作

5、堆栈溢出

6、内存越界

3——排查段错误出现在哪里的方法

第一步:输入dmesg

然后就会出现你程序段错误出现的相关描述

IP后面出现的地址就是你段错误出现的地址。

第二步:然后调用命令"addr2line -e 程序名 地址"就会打印出发生错误的文件和行号,如下图:

感觉这个方法超有用的有木有!!

补充:

o_O:Linux dmesg(英文全称:display message)命令用于显示开机信息。

kernel 会将开机信息存储在 ring buffer 中。您若是开机时来不及查看信息,可利用 dmesg 来查看。开机信息亦保存在 /var/log 目录中,名称为 dmesg 的文件里。

o_O:addr2line命令来自于英文词组”address to line“的缩写,其功能是将函数地址解析成文件名或行号的工具给出一个可执行文件中的地址或一个可重定位对象中的偏移部分的地址,使用调试信息来找出与之相关的文件名和行号

语法格式:addr2line [参数] [地址]

常用参数:

-a在函数名、文件和行号信息之前,显示地址,以十六进制形式
-b指定目标文件的格式为bfdname
-e指定需要转换地址的可执行文件名
-j给出的地址代表指定section偏移,而非绝对地址
-C将低级别的符号名解码为用户级别的名字
-f在显示文件名、行号的同时显示函数名信息
-p每一个地址的信息占一行

有用: 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼2333号程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值