在unix系統下,應用程式崩潰,一般會產生core檔案,如何根據core檔案查詢問題的所在,並做相應的分析和除錯,是非常重要的。
core的意思是記憶體, dump的意思是扔出來, 堆出來.
開發和使用unix程式時, 有時程式莫名其妙的down了, 卻沒有任何的提示(有時候會提示core dumped). 這時候可以檢視一下有沒有形如core.程序號的檔案生成, 這個檔案便是作業系統把程式down掉時的記憶體內容扔出來生成的, 它可以做為除錯程式的參考.
core dump又叫核心轉儲, 當程式執行過程中發生異常, 程式異常退出時, 由作業系統把程式當前的記憶體狀況儲存在乙個core檔案中, 叫core dump.
有時候程式down了, 但是core檔案卻沒有生成. core檔案的生成跟你當前系統的環境設定有關係, 可以用下面的語句設定一下, 然後再執行程式便成生成core檔案.
ulimit -c unlimited
core檔案生成的位置一般於執行程式的路徑相同, 檔名一般為core.程序號
當獲得了core檔案以後,就可以利用命令gdb進行查詢,引數一是應用程式的名稱,引數二是core檔案
如: gdb [...]*** [...]/***_pid1065_sig11.core
然後輸入bt或者where找到錯誤發生的位置和相應的堆疊資訊。就可知道發生錯誤時的函式呼叫關係,然後可以使用up或者down檢視上一條和下一條具體詳細資訊。這樣便能對問題進行大概定位,然後看源**,進行分析。
用gdb除錯core dump檔案
在unix系統下,應用程式崩潰,一般會產生core檔案,如何根據core檔案查詢問題的所在,並做相應的分析和除錯,是非常重要的。什麼是core dump?core的意思是記憶體,dump的意思是扔出來,堆出來.開發和使用unix程式時,有時程式莫名其妙的down了,卻沒有任何的提示 有時候會提示co...
用gdb除錯coredump檔案
在unix系統下,應用程式崩潰,一般會產生core檔案,如何根據core檔案查詢問題的所在,並做相應的分析和除錯,是非常重要的。什麼是core dump?core的意思是記憶體,dump的意思是扔出來,堆出來.開 發和使用unix程式時,有時程式莫名其妙的down了,卻沒有任何的提示 有時候會提示c...
用gdb除錯core dump檔案
gdb基本的使用方法在此就不說了。載入core檔案的命令行為 dgb exe core 例如gdb testall core.2345 最重要的乙個命令是where,這個就像windbg的命令 analyze v 我模擬了幾個crash的情況,乙個乙個說。第乙個 刪除兩次指標導致crash的情況 源...