gdb调试coredump文件

linux上程序崩溃起来挺烦人,不过linux 比较好的是有gdb.

1、生成coredump文件

echo "ulimit -c unlimited" >> /etc/profile

然后记得敲入命令

source /etc/profile

然后敲入命令:

ulimit –c

效果如下:

确认能否生成coredump文件,使用如下命令(使用时注意,我在测的时候会直接退出当前用户)

kill -s SIGSEGV $$

然后回到执行上述命令的路径下即可看到coredump文件,我这边生成的文件名为core.3477,依个人会随机生成不同的数字。

2、调试coredump文件

调试方式为: gdb program coredump文件

例如我的可执行文件为test, 生成的coredump文件为core.3533,则命令如下:

gdb test core.3533

显示如下图所示:

嗯,有的人运气好,直接就显示源代码了,如果你像我一样,接着用下面的命令

backtrace

打印堆栈信息。

我们看到最接近崩溃的地方在第8行

然后调用命令

frame 8

直接找到源代码的位置:

时间: 2024-07-30 18:46:11

gdb调试coredump文件的相关文章

linux系统产生和调试coredump文件

系统配置了coredump后,当程序异常终止时操作系统会在指定的目录下按指定的文件名格式产生一个core文件.core文件是程序内存映像以及相关的调试信息,通过gdb调试coredump文件可以知道导致程序异常终止的原因. 1.系统配置coredump 首先是打开coredump,通过ulimit命令看coredump是否开启: [[email protected] coredump]# ulimit -a core file size (blocks, -c) unlimited data s

使用GDB生成coredump文件【转载】

本文转载自: http://blog.csdn.net/sky_qing/article/details/8548989 如果在测试过程中遇到某个进程的CPU利用率过高或者卡死而需要去调试该进程时,可以利用gdb命令生成coredump文件,然后再去调试coredump文件来定位问题. 那么如何使用gdb生成coredump文件呢?其实步骤很简单: 1. 安装好gdb,然后使用命令 'gdb'.(假设需要调试的进程号为 21509) 2. 使用 ‘attach 21590’命令将gdb附加到进程

gdb调试core文件

什么是Core Dump?Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core

Linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件

交叉编译gdb和gdbserver 1.下载gdb:下载地址为:http://ftp.gnu.org/gnu/gdb/按照一般的想法,最新版本越好,因此下载7.2这个版本.当然,凡事无绝对.我们以gdb-7.2.tar.bz2 这个文件为例.2.解压缩: $ tar jxvf gdb-7.2.tar.bz2 注:小技巧:Linux下一般压缩文件后缀为.tar.bz2和.tar.gz,它们解压命令有两三个选项是一致的: xf(v),前者再加上j选项,后者再加上z选项. 3.进入该目录 $ cd g

解决gdb 调试 core 文件函数名显示为问号的问题

关于gdb调试core文件总是一堆问号的问题 问题描述:已经在编译选项中加入了-g,但是查看core文件时,还是一堆问号,使用的命令为:gdb -c core 解决方案:由于gdb -c core这样的使用在有些系统下支持不是很好,所以推荐用如下两种方法: 1) gdb exe (gdb) core-file core 2) gdb -c core (gdb) file exe

[Debug]用gdb分析coredump文件

1,系统默认是不产生coredump文件的,需要用以下命令使系统产生coredump文件 查看core文件的限制,此时为0,即不成生core文件 ulimit -c 0 打开core文件的限制,不限制core文件的大小,使程序可以产生core文件 ulimit -c unlimited ulimit -c unlimited 2,以下是内存访问错误示例 [cpp] view plaincopy 1 #include<stdio.h> 2 int main() 3 { 4      char* 

利用gdb调试coredump

1. 怎么生成coredump文件? 检查两个条件 1) core文件限制的大小,如果要生成的core文件超过设定的Core文件大小,则无法生成. 2) 编译的过程中需要使用 -g 参数.把调试信息加入到可执行文件. 修改core限制的大小命令: ulimit -c unlimited

gd调试命令,gdb调试core文件

使用 gcc -g test.c -o test.out 编译程序,只有加-g参数才支持gdb调试: 然后 gdb ./test.out 运行可执行文件,进入gdb调试模式(gdb),在括号后面的输入命令: (gdb)help:查看命令帮助 (gdb)start:单行执行 (gdb)l:查看源程序 (gdb)n:执行下一行 (gdb)s:进入被调函数里面 (gdb)bt:查看函数调用栈 (gdb)p 变量:打印变量值 (gdb)f:切换函数栈帧 (gdb)run:重新开始运行文件 (gdb)fi

【Linux】gdb调试core文件

编写服务器端程序,很容易遇到Crash问题,比较幸运的是Linux提供了core file,保留了Crash的现场.有时候,根据当前的调用栈,并且打印出当前栈的变量就可以分析出crash的原因,但是,有时候看到调用栈却束手无策.下面就介绍自己通过GDB的几个命令的结合,发现一个crash的原因的过程. 下面让我们一起进入现场,来逐步发现其中的原因. 首先,还是运行gdb 命令,gdb wbxgs core.5797,来看看现场. [[email protected] bin]# gdb wbxg