gdb查看空指针 linux_在Linux上利用core dump和GDB调试

本文介绍了在Linux系统中,当程序遇到段错误(segfault)时,如何利用core dump文件进行故障排查和调试。内容包括core dump的生成、核心参数设置(如`ulimit -c`和`kernel.core_pattern`)、GDB的使用,以及如何通过GDB进行堆栈追踪和符号加载来定位问题。
摘要由CSDN通过智能技术生成

段错误(segfault)

"段错误"是程序试图操作不允许访问或试图访问的不允许内存的情况。可能导致段错误的原因主要有:

1、试图解引用空指针(你不允许访问内存地址0)

2、试图解引用不在你内存中的其他指针

3、一个C++ vtable虚表指针被破坏并指向错误的地方,这导致程序试图去执行一些不可执行的内存。

4、其他情况,比如未对齐的内存访问也可能会出现段错误。

core dump 文件

在linux下当应用程序发生异常中止退出或者发生崩溃的时候,linux内核会将应用程序在这段运行期间的内存状态等相关信息转存到磁盘,以供系统故障排查或者调试。这个转存的文件叫core dump文件。core dump文件中会记录程序当时的内存调用、堆栈引用、进程和线程调用等信息,可以帮助开发人员和维护人员了解异常发生当时的环境参数和信息,所以core dump对故障排查和bug调试具有重大的意义。

要深入探究还得利用得core dump文件,下面我们就对其进一步探究:

如何获得core dump

我们前面说了core dump是程序发生异常时候,其内存使用副本的转存文件,当你需要调试程具体序出错时的信息时候,它非常有用。

当程序发生段错误时,Linux内核有时会向磁盘写入一个core dump文件。很多人可能疑惑按照教程一步一步来做了,但是最后没有获得所需的core dump。一般情况下系统设置不输出core dump,所以没有生成core dump文件。

如果没有生成core dump文件,请按照以下步骤做设置:

1.在linux终端执行以下命令 ulimit -c unlimited

2.运行sy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值