[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 系統管理 > 其它 > 正文
何謂 core?
Wilbur Lang (2001-04-16 15:44:06)
在使用半導體作為內存的材料前,人類是利用線圈當作內存的材料(發明 者為王安),線圈就叫作 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 的選項打開 不然, 就會出現一大堆你看不懂的東西,而不是你喜歡的源程序。
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★