core dump和段錯誤

來源:互聯網
上載者:User

    在代碼量較多時,調試比較困難。常用方法是在源碼中插入大量的printf語句。但是當發生segmentation fault時,定位就比較複雜了。
    core dump又叫核心轉儲, 當程式運行過程中發生異常, 程式異常退出時, 由作業系統把程式當前的記憶體狀況儲存在一個core檔案中, 叫core dump, 它可以做為偵錯工具的參考.
    有時候程式down了, 但是core檔案卻沒有產生,可以用下面的語句設定一下, 然後再運行程式便成產生core檔案, 或在~/.bashrc 的最後加入
    ulimit -c unlimited
    然後偵錯工具,參數一是應用程式的名稱,參數二是core檔案
    gdb app core
    然後輸入bt或者where找到錯誤發生的位置和相應的堆棧資訊。就可知道發生錯誤時的函數調用關係,然後可以使用up或者down查看上一條和下一條具體詳細資料。

    造成segment fault,一般情況下是記憶體訪問越界、非法指標/堆疊溢位,程式中不要使用大的局部變數,因為局部變數都分配在棧上,這樣容易造成堆棧的溢出,破壞系統的堆和棧的結構,出現莫名其妙的錯誤。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.