解决方法
它基本上是使用中的进程地址空间(从包含所有虚拟内存区域的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()
中输出非基于内存的信息,如线程详细信息,然后返回输出进程空间.