一文入门Linux下gdb调试(二)

 

作者:良知犹存

转载授权以及围观:欢迎添加微信号:Conscience_Remains

总述

    今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里。

  该文件也是二进制文件,可以使用gdb、elfdump、objdump或者windows下的windebug、solaris下的mdb进行打开分析里面的具体内容。

    基于core文件的快照功能,我们就可以专门调试分析程序崩溃原因了,gdb同时调试一个运行程序和core文件,然后进行gdb调试的步骤,然后查看代码崩溃瞬间系统信息。

 

使用如下:

gdb  ./abort  ./core    /*  使用gdb调试*/

 

三、生成core文件配置

 

1.代码崩溃的条件有很多种,我们可以通过 kill -l 指令来查看奔溃的信号

kill -l

 

 

使用内存转储文件

ulimit

虽然我们知道进程在coredump的时候会产生core文件,但是有时候却发现进程虽然崩溃了,但是我们却找不到core文件。

 

这是因为系统默认情况下内存转储文件 的大小设置是零,我们需要重新配置一下。ulimit  -c 可以设置core文件的大小,如果这个值为0.则不会产生core文件,这个值太小,则core文件也不会产生,因为core文件一般都比较大。

2. 其中使用ulimit -c 可以查看你的系统对资源的限制情况

 

ulimit -c

 

发现设置为0

3.我们可以使用ulimit  -c unlimited来设置无限大,则任意情况下都会产生core文件

 

/*用来设置运行你的系统在应用程序崩溃之时可以生产core dump文件*/ulimit  -c unlimited

 

 

4.执行 ./编译好的执行文件,代码崩溃产生内存转储的core dump文件,ls 可看到一个名为core且以进程号为后缀的文件

 

 

5.调试coredump文件

 gdb ./statck  ./core

调试方法与gdb调试正常程序一样,详情参照上一篇一文入门Linux下gdb调试(一)

 

 这就是我分享的gdb core dump 生成及调试方法,如果大家有什么更好的思路,欢迎分享交流哈。

 

 

更多分享,扫码关注我

posted @ 2020-06-23 09:07  良知犹存  阅读(287)  评论(0编辑  收藏  举报