一文入门Linux下gdb调试(二)
作者:良知犹存
转载授权以及围观:欢迎添加微信号:Conscience_Remains
总述
今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里。
该文件也是二进制文件,可以使用gdb、elfdump、objdump或者windows下的windebug、solaris下的mdb进行打开分析里面的具体内容。
基于core文件的快照功能,我们就可以专门调试分析程序崩溃原因了,gdb同时调试一个运行程序和core文件,然后进行gdb调试的步骤,然后查看代码崩溃瞬间系统信息。
使用如下:
三、生成core文件配置
1.代码崩溃的条件有很多种,我们可以通过 kill -l 指令来查看奔溃的信号
使用内存转储文件
ulimit
虽然我们知道进程在coredump的时候会产生core文件,但是有时候却发现进程虽然崩溃了,但是我们却找不到core文件。
这是因为系统默认情况下内存转储文件 的大小设置是零,我们需要重新配置一下。ulimit -c 可以设置core文件的大小,如果这个值为0.则不会产生core文件,这个值太小,则core文件也不会产生,因为core文件一般都比较大。
2. 其中使用ulimit -c 可以查看你的系统对资源的限制情况
发现设置为0
3.我们可以使用ulimit -c unlimited来设置无限大,则任意情况下都会产生core文件
/*用来设置运行你的系统在应用程序崩溃之时可以生产core dump文件*/
ulimit -c unlimited
4.执行 ./编译好的执行文件,代码崩溃产生内存转储的core dump文件,ls 可看到一个名为core且以进程号为后缀的文件
5.调试coredump文件
调试方法与gdb调试正常程序一样,详情参照上一篇一文入门Linux下gdb调试(一)。
这就是我分享的gdb core dump 生成及调试方法,如果大家有什么更好的思路,欢迎分享交流哈。
更多分享,扫码关注我