2011-09-06 119 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系統上創建。

當它們與已經符合調試信息的可執行文件結合使用時,它們特別有用,因爲它們可以被調試器讀取,以幫助確定出錯的地方。使用調試器,您可以看到導致崩潰的堆棧跟蹤,並檢查相應堆棧幀中的變量狀態。