码迷,mamicode.com
首页 > 数据库 > 详细

Unix 用gdb分析core dump文件

时间:2014-12-11 15:26:13      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   文件   div   问题   

产生core文件条件

用ulimit -c 指定core文件大小来开启core文件的生成,如:ulimit -c unlimited

 

用gdb分析core文件的条件

可执行程序在编译时,需加入-g参数,否则gdb无法找到symbol信息,从而无法定位问题。

例如,如下两个cpp文件中,test.cpp会导致crash。

// test.cpp

void testCrash()
{
  int *p = 0;
  *p = 3;  
}
// main.cpp

#include <stdio.h>

void testCrash();

int main()
{
  testCrash();
  return0;
}

在编译时,如下的-g为必须,否则无法定位core文件中问题。

g++ -c -g test.cpp

g++ -c main.cpp

g++ test.o main.o -o main

 

分析core文件所需文件

  • 程序运行崩溃时产生的core文件
  • 产生core文件的可执行文件

 

用gdb分析core文件

启动gdb:

  • gdb [executable file] [core file]

进入gdb命令行后,会直接打印出导致crash的相关信息,也可执行如下命令详细查看。

gdb命令行:

  • bt: 打印程序崩溃时的堆栈信息,包括导致crash的对应的frame number,文件名和行数
  • frame [frame number]: 打印出该行代码
  • info locals: 打印局部变量信息
  • print [local variable]: 打印某个局部变量
  • list: 打印相关代码
  • quit: 退出gdb命令行

 

Unix 用gdb分析core dump文件

标签:style   blog   io   ar   color   sp   文件   div   问题   

原文地址:http://www.cnblogs.com/playerken/p/4157481.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!