什么是核心文件,为什么它有用?

时间:2011-09-06 22:11:24

标签: c unix coredump

正如标题所说:

核心文件究竟是什么?为什么它有用?

我知道什么时候由UNIX生成,我知道如何检查一个。我知道它们对于调试很有用......但是我不完全确定它包含什么,所以我不确定它为什么有用!

5 个答案:

答案 0 :(得分:2)

核心文件本质上是程序崩溃时内存和寄存器的转储。在调试器中查看时,您可以获取有关崩溃时程序所在位置的信息,以及获取堆栈跟踪或查看堆内存状态的信息。基本上,它允许您在崩溃时使用调试器执行任何操作,而不是实际运行代码。

答案 1 :(得分:1)

它基本上是进程内存的快照。

它通常在过程异常结束时自动创建(例如分段错误)。

可以通过gdb之类的调试工具加载它来尝试确定崩溃的原因。例如,可以检查在失败时进程正在执行的内容,变量具有的值,堆栈回溯(调用具有问题的函数的函数,调用它的函数,等等),等

答案 2 :(得分:1)

它基本上包含进程的内存,并允许您查看/了解导致问题的原因(堆栈跟踪,检查变量等)。有关详细信息,请参阅man core

答案 3 :(得分:0)

核心文件基本上包含进程'内存映射的副本,以及寄存器的值,包括IP(程序计数器)。这对于调试非常有用,因为如果在编译原始程序时包含调试符号,调试器可以显示实际状态(变量,数据部分等,以及调用堆栈)。

答案 4 :(得分:0)

核心文件包含创建时的内存状态。当程序崩溃(大小可能受OS属性coredumpsize限制)或程序收到告知核心转储的终止信号时,会在* nix系统上创建。

当与已经符合调试信息的可执行文件结合使用时,它们特别有用,因为调试器可以读取它们有助于确定出错的地方。使用调试器,您可以看到导致崩溃的堆栈跟踪,并检查相应堆栈帧中的变量状态。