Linux crash dump文件生成与使用

本文介绍了Linux系统下如何生成和使用crash dump文件。在程序崩溃时,通过`ulimit -c unlimited`或`setrlimit`设置,系统会自动生成core dump文件。使用gdb进行分析,通过`gdb –core=core.xxxx`加载核心文件,然后使用`file ./a.out`或`gdb a.out core.xxxx`结合`where`或`backtrace`查看堆栈信息,通过`frame x`获取详细函数调用信息。程序的symbols可以使用`-g`编译选项保留,发布时可使用`strip`命令移除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux crash dump文件生成与使用

Version 1.1   2008-10-28

 

不像Windows程序需手动调用相关函数,Linux程序crash dump(称为core dump)文件会在程序崩溃(如SIGSEGV)时自动生成,只需要在之前设置了一个参数即可——当然,windows的方式能够支持更灵活的功能。

生成:

1,  使用ulimit -c unlimited设置参数(unlimited表示dump文件大小无限制,否则会截断到设置大小),或在程序中调用setrlimit进行设置;

2,  在发生SIGSEGV时系统会自动在程序目录下生成core.xxxx文件,此即dump文件;

注意,此时程序不能再注册SIGSEGV的处理函数!

 

使用gdb分析dump文件:

1,  执行gdbgdb –core=core.xxxx

2,  gdb中加载符号文件:file ./a.out

上两步也可以统一成:gdb a.out core.xxxx

3,  定位到出错代码:wherebacktrace,将显示#x这样的堆栈信息

4,  查看更详细的函数调用信息:frame xx#后的数字

 

一段setrlimit代码:

       rlimit lmt;

       lmt.rlim_cur = 1024*100;

       lmt.rlim_max = RLIM_INFINITY;

       return -1 != setrlimit(RLIMIT_CORE, &lmt);

 

另外:程序的symbols直接保存在 可执行文件中,一种处理方式是使用-g编译生成可执行文件,发布时再使用命令strip去掉symbols


参考:man dumpman 2 setrlimit


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值