究竟啥是核心文件,它为啥有用?
Posted
技术标签:
【中文标题】究竟啥是核心文件,它为啥有用?【英文标题】:What exactly is a core file and why is it useful?究竟什么是核心文件,它为什么有用? 【发布时间】:2011-09-06 22:11:23 【问题描述】:正如标题所说:
什么是核心文件,它为什么有用?
我知道 UNIX 何时生成一个,并且我知道如何检查一个。我知道它们对调试很有用......但我不完全确定它包含什么,所以我不确定它为什么有用!
【问题讨论】:
它基本上是进程崩溃时内存空间的转储,包括代码和数据。您可以将核心文件提供给调试器并查看进程的内部结构以查看事物处于什么状态,并希望找出导致转储的原因。 @Marc,这真的应该作为答案发布:) ***.com/search?q=core+file 【参考方案1】:核心文件本质上是程序崩溃时内存和寄存器的转储。在调试器中查看时,您可以获得有关崩溃时程序所在位置的信息,以及获取堆栈跟踪或查看堆内存的状态。基本上它可以让你在崩溃时使用附加的调试器做任何你能做的事情,而不需要实际运行的代码。
【讨论】:
【参考方案2】:它基本上包含进程的内存,并允许您查看/了解导致问题的原因(堆栈跟踪、检查变量等)有关更多详细信息,请参阅man core
【讨论】:
【参考方案3】:它基本上是进程内存的快照。
它通常在进程异常结束(例如分段错误)时自动创建。
可以通过gdb
等调试工具加载,尝试确定崩溃原因。例如,可以检查失败时进程正在执行什么、变量的值、堆栈回溯(调用有问题的函数的函数、调用它的函数等等),等等
【讨论】:
【参考方案4】:核心文件基本上包含进程内存映射的副本,以及寄存器的值,包括 IP(程序计数器)。这对于调试非常有用,因为如果您在编译原始程序时包含调试符号,调试器可以向您显示实际状态(变量、数据段等和调用堆栈)。
【讨论】:
【参考方案5】:核心文件包含创建时的内存状态。当程序崩溃(大小可以由操作系统属性 coredumpsize 限制)或当程序接收到告诉它核心转储的终止信号时,它们会在 *nix 系统上创建。
当与符合调试信息的可执行文件结合使用时,它们特别有用,因为它们可以被调试器读取,有助于确定出现了什么问题。使用调试器,您可以查看导致崩溃的堆栈跟踪,并检查相应堆栈帧中变量的状态。
【讨论】:
以上是关于究竟啥是核心文件,它为啥有用?的主要内容,如果未能解决你的问题,请参考以下文章