2015-11-10 30 views
-4

更多信息當運行我的C代碼,我一直recieving錯誤消息 分段錯誤(核心轉儲)如何查看關於此故障

這就是我收到。有沒有辦法讓我從這個錯誤中看到更多? I.E.通過c代碼頂部的c庫?

+1

怎麼樣了一些代碼,看看有什麼發生? –

+6

除了使用調試器? –

+5

試試'gdb' - > https://www.gnu.org/software/gdb/ – Haris

回答

1

消息core dumped表示已創建核心文件。核心文件是一個文件,其中包含與剛剛崩潰的進程相關的所有內存內容(通常在應用程序崩潰時創建核心轉儲)。

您可以執行以下兩項操作:您可以通過在發生此問題時查看您的程序來查找原因,或者可以調查覈心轉儲,以便了解導致此情況的錯誤類型。在大多數情況下,這可以通過從核心轉儲中讀取調用堆棧來完成。 核心轉儲可以位於任何地方,我知道它在運行過程的運行時目錄中創建的情況,我知道在哪裏核心轉儲會自動移動到/var/core。關於閱讀核心轉儲的應用程序,我曾與dbxgdb合作,但我認爲ladebug也可能有用。

我知道,我給出了很多新的問題,但我希望現在你有一個想法,在哪些方向尋找更多的信息。

1

您可以使用調試器來查找導致此錯誤的行。這應該足以解決您的問題。 Segmentation fault通常是由訪問不可用的內存位置引起的。例如,請考慮以下代碼:

int array[5]; 
array[2] = 10; // OK 
array[20] = 10; // Segmentation fault 

當您在編寫循環時出現錯誤時,通常會出現這種情況。

爲例見this question如何與GDB調試程序:

首先編譯程序:

gcc program.c -g -o program 

然後使用GDB:

gdb ./program 
(gdb) run 
<segfault happens here> 
(gdb) backtrace 
<offending code is shown here>