2011-09-06 86 views
3

正如标题所示:核心文件究竟是什么,它为什么有用?

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

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

+1

它基本上是一个进程的内存空间崩溃的时刻,包括代码和数据。你可以将核心文件提供给一个调试器,并且围绕进程的内部来查看进程中的状态,并希望找出造成转储的原因。 –

+0

@Marc,应该真的被张贴为答案:) – bdonlan

+1

http://stackoverflow.com/search?q=core+file –

回答

2

核心文件本质上是程序在崩溃时的内存和寄存器的转储。在调试器中查看时,您可以获知程序在崩溃时的位置,以及获取堆栈跟踪或查看堆内存状态的信息。基本上它可以让你在发生崩溃时使用附加的调试器做任何事情,而实际运行的代码很少。

1

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

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

它可以通过调试工具如gdb加载来尝试确定崩溃的原因。例如,可以检查进程在发生故障时的执行情况,变量的值,堆栈回溯(调用函数的函数,调用函数的函数等),以及等等。

0

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

1

它基本上包含进程的内存,可以让你看到/明白是什么原因造成的问题(堆栈跟踪,检查变量等),更多信息请参考man core

0

核心文件包含当时的记忆状态他们被创建。当一个程序崩溃时(大小可以被操作系统属性coredumpsize限制),或者当程序收到一个将信号告诉核心转储的终止信号时,它们将在* nix系统上创建。

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