什么是Linux中的核心转储文件?它提供了哪些信息?

Jay*_*Jay 12 c linux debugging coredump

什么是linux中的核心转储文件?它提供的所有信息是什么?

pax*_*blo 12

它基本上是正在使用的进程地址空间(来自mm_struct包含所有虚拟内存区域的结构),以及崩溃时的任何其他支持信息*a.

例如,假设您尝试取消引用NULL指针并接收SEGV信号,导致您退出.作为该过程的一部分,操作系统会尝试将您的信息写入文件以供以后进行事后分析.

您可以将核心文件与可执行文件一起加载到调试器中(例如,用于符号和其他调试信息),并尝试发现导致问题的原因.


*a:在内核版本2.6.38中,fs/exec.c/do_coredump()负责核心转储,你可以看到它传递了信号编号,退出代码和寄存器.它又将信号编号和寄存器传递给特定于二进制格式(ELF,a.out等)的转储器.

ELF转储器是fs/binfmt_elf.c/elf_core_dump(),您可以看到它输出非基于内存的信息,如线程详细信息fs/binfmt_elf.c/fill_note_info(),然后返回输出进程空间.