linux下用core和gdb查詢出現"段錯誤"的地方__linux

來源:互聯網
上載者:User
有些時候我們在一段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檔案 。


從上面我們可以清楚的看到我們的程式是在那個地方出現了錯誤。
呵呵,有了這種方法,我想以後我們可以不再那麼懼怕"段錯誤"了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.