Unix 用gdb分析core dump文件


產生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命令行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM