gdb调试core文件

原创 2015年11月20日 17:49:34

在Linux下进行C/C++开发的小伙伴们应该都遇到过coredump的情况,遇到情况应该怎么处理呢?怎么定位问题所在?只要分析下core文件,那么就很容易找到程序是在哪一行出现coredump的。通常情况下,在程序出现coredump的时候,系统会把程序运行时的内存,寄存器状态,堆栈指针等信息保存到一个文件中,这个文件就是core文件。

1) 如何让程序崩溃的时候产生core文件?
系统命令: ulimit
查看当前core文件的设置情况:ulimit -a
这里写图片描述
从上面可以看出,core file size的值为0,也就是说程序崩溃的时候不会产生core file,只要设置这个值大于0,那么程序出现coredump的时候就会产生core file了。
设置命令: ulimit -c core文件大小(unlimited代表无限大)
执行命令: ulimit -c unlimited
查看当前core文件的设置情况:ulimit -a
这里写图片描述

这时,在程序coredump就会产生一个core文件。

2) gdb调试core文件

首先编写一个会导致coredump的程序,如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *p = "hello world!";
    p[0] = 'a';  // 写只读存储区,这里会出现coredump

    return 0;
}

然后保存在test.cpp文件中,编译: g++ -o test -g test.cpp
编译时添加-g指令可以让core文件保存更多的信息。
执行./test程序后就会在当前目录产生一个core文件,如:core.14809
gdb分析core文件的指令: gdb 程序 core文件
如上面编译得到的程序是test,执行命令: gdb test core.14809
这里写图片描述
从上面可以看出,程序的第6行导致coredump。
同时可以采用:gdb -c core文件 的命令查看core文件的信息。
这里写图片描述

where命令用于查看出现coredump的位置。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

GDB调试core文件最常用的

  • 2010年04月02日 18:30
  • 45KB
  • 下载

gdb用法(二) 在Linux下产生并调试core文件

分析核心(core)文件   在程序发生崩溃时,有时可能无法直接运行GDB来进行调试。比如程序可能是在另外一台机器上运行的,或者因为程序对时间比较敏感,所以手动跟踪调试会产生无法接受的延迟等...

GDB调试core文件样例

core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIG...

gdb用法(二) 在Linux下产生并调试core文件

分析核心(core)文件 在程序发生崩溃时,有时可能无法直接运行GDB来进行调试。比如程序可能是在另外一台机器上运行的,或者因为程序对时间比较敏感,所以手动跟踪调试会产生 无法接受的延迟等。...

Linux学习--gdb调试core文件

cd /BIEE12C/user_projects/domains/bi gdb /BIEE12C/bi/bifoundation/web/bin/sawserver core.10924 (gd...

GDB调试core文件详解

一,什么是coredump         我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条...

GDB调试core文件(2)

使用gdb和core dump迅速定位段错误 关键字:gdb、段错误、core dump一、什么是core dumpcore:内存、核心的意思; dump:抛出,扔出; core dump:前提:当...

linux下用gdb调试core文件

以前用C/C++写程序时,运行时经常会出现错误,而且shell上也会出现“段错误(吐核)”的错误输出,虽然好奇输出的到底是什么意思,觉得可能会不会是输出什么运行时错误信息之类的,就用ls看看目录下是否...

gdb调试core文件

编写服务器端程序,很容易遇到Crash问题,比较幸运的是Linux提供了core file,保留了Crash的现场。有时候,根据当前的调用栈,并且打印出当前栈的变量就可以分析出crash的原因,但是,...
  • hzhsan
  • hzhsan
  • 2014年07月28日 12:02
  • 8391

linux gdb调试core文件

$ uname -a Linux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT 2004 i686 i686 i386 GNU/Linux ...
  • jamex
  • jamex
  • 2012年07月24日 17:09
  • 2068
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gdb调试core文件
举报原因:
原因补充:

(最多只允许输入30个字)