linux程式開發之Core Dump

來源:互聯網
上載者:User

整理:Wilbur Lang

何謂 core?

    在使用半導體作為記憶體的材料前,人類是利用線圈當作記憶體的材料(發明 者為王安),線圈就叫作 core ,用線圈做的記憶體就叫作 core memory。如今 ,半導體工業澎勃發展,已經沒有人用 core memory 了,不過,在許多情況下, 人們還是把記憶體叫作 core 。

何謂 core dump?

    我們在開發(或使用)一個程式時,最怕的就是程式莫明其妙地當掉。雖然系 統沒事,但我們下次仍可能遇到相同的問題。於是這時作業系統就會把程式當掉 時的記憶體內容 dump 出來(現在通常是寫在一個叫 core 的 file 裡面),讓 我們或是 debugger 做為參考。這個動作就叫作 core dump。

為何會發生 core dump?

    前面說過,在程式當掉時出錯。在 C/C++語言中,最常發生錯誤的地方就是指 針有問題。您可以利用 core 檔案和 debugger 把錯誤找出來(要怎麽在 debugger 中使用 core 檔案?man 一下 gdb 吧!)。

我可以把 core 檔案刪掉嗎?

    如果你不會、不能、不需要修改程式,那就放心地把它刪除了吧!

要怎麽才不會讓 core 檔案出現?

    如果用的是tcsh的話, 以試著在 .tcshrc 裡加一行:
    limit coredumpsize 0
    如果用的是bash的話, 在/etc/profile裡加上(或者修改)一條:
    ulimit -c 0

有一招, 可以讓你看出 core 最好用的地方

    gdb -c core, 進去後打 where, 就可以 show 出你是在程式哪一行當掉的, 還有在當掉時在哪個 function 裡, 這個 function 是被哪個 function 所 call 的, 而這個 function 又是被哪個 function 所 call 的.... 一直到 main()

    由這個資訊, 可以找出五六成的 bug........ 屢試不爽

    但, 先決條件, 當你在 compile 時必須把 debug information 的選項開啟 不然, 就會出現一大堆你看不懂的東西,而不是你喜歡的來源程式。

     

相關文章

聯繫我們

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