歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> linux下用core和gdb查詢出現段錯誤

linux下用core和gdb查詢出現段錯誤

日期:2017/3/3 14:15:51   编辑:Linux技術
有些時候我們在一段C代碼的時候,由於對一個非法內存進行了操作,在程序運行的過程中,出現了"段錯誤"。
當我們的程序崩潰時,內核有可能把該程序當前內存映射到core文件裡,方便程序員找到程序出現問題的地方。
什麼是core dump?
core的意思是內存,dump的意思是扔出來,堆出來。
為什麼沒有core文件生成呢?
有時候程序down了,但是core文件卻沒有生成.core文件的生成跟你當前系統的環境設置有關系,可以用下面的語句設置一下便生成core文件了
ulimit -c unlimited
core 文件生成的位置一般於運行程序的路徑相同,在ubuntu下文件名一般 為core.
什麼是core文件
當一個程序奔潰時,在進程當前工作目錄的core文件中復制了該進程的存儲圖像。core文件僅僅是一個內存映像(同時加上調試信息),主要用來調試的。
下面我們來看看,怎樣利用core文件來定位我們出現"段錯誤"的地方.



程序運行結果:



從上面我們可以看出,第一次運行程序出現"段錯誤"並沒有出現core文件,一般linux操作系統默認core文件的大小都是0,需要手動設置一下。
調試core文件
core文件是個二進制文件,需要用相應的工具來分析程序崩潰時的內存映像。
linux下可以用gdb來調試core文件 。



從上面我們可以清楚的看到我們的程序是在那個地方出現了錯誤。
Copyright © Linux教程網 All Rights Reserved