GDB调试之Core dump分析(二十五)

一、核心转储coredump基础 

Linux core dump:一般称之为核心转储、内核转储,我们统称为转储文件。是某个时刻某个进程的内存信息映射,即包含了生成转储文件时该进程的整个内存信息以及寄存器等信息。转储文件可以是某个进程的,也可以是整个系统的,可以是进程活着的时候生成的,也可以是进程或者系统崩溃的时候自动生成的。为活着的进程创建core dump文件一般可以通过gdb来生成,使用gdb把进程attach进来以后,执行generate-core-file或者gcore命令来生成core dump文件。

为正在运行的程序生成core dump文件:

如何让程序崩溃的时候自动生成core dump文件?

比如Ubuntu 18.04:

  • ulimit -c
  • cat /proc/sys/kernel/core_pattern

比如 Ubuntu 20.04

  • cat /proc/sys/kernel/core_pattern
  • ulimit -c

调试代码如下:

#include <thread>
#include <iostream>
#include <vector>
#include <mutex>
#include <cstring>
using namespace std;
int main()
{

	int *p = 0;
	*p = 10;
	return 0;
}

崩溃时生成的core dump文件:  

core dump文件分析:

 

 
posted @ 2024-01-25 14:54  TechNomad  阅读(454)  评论(0编辑  收藏  举报