程序员开发实例大全宝库

网站首页 > 编程文章 正文

一文入门Linux下gdb调试(二)(linux安装gdb调试器)

zazugpt 2024-08-13 12:57:56 编程文章 34 ℃ 0 评论


作者:良知犹存

转载授权以及围观:欢迎添加微信号: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 生成及调试方法,如果大家有什么更好的思路,欢迎分享交流哈。


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表