Linux core dump的詳細(xì)介紹及使用
我們?cè)陂_(kāi)發(fā)(或使用)一個(gè)程序時(shí),最怕的就是程序莫明其妙地當(dāng)?shù)簟km然系 統(tǒng)沒(méi)事,但我們下次仍可能遇到相同的問(wèn)題。于是這時(shí)操作系統(tǒng)就會(huì)把程序當(dāng)?shù)?時(shí)的內(nèi)存內(nèi)容 dump 出來(lái),讓我們或是debugger 做為參考。這個(gè)動(dòng)作就叫作 core dump。
1.何謂 core?
在使用半導(dǎo)體作為內(nèi)存的材料前,人類(lèi)是利用線(xiàn)圈當(dāng)作內(nèi)存的材料(***為王安),線(xiàn)圈就叫作 core ,用線(xiàn)圈做的內(nèi)存就叫作 core memory。如今 ,半導(dǎo)體工業(yè)澎勃發(fā)展,已經(jīng)沒(méi)有人用 core memory 了,不過(guò),在許多情況下, 人們還是把記憶體叫作 core 。
2.何謂 Linux core dump?
我們?cè)陂_(kāi)發(fā)(或使用)一個(gè)程序時(shí),最怕的就是程序莫明其妙地當(dāng)?shù)簟km然系 統(tǒng)沒(méi)事,但我們下次仍可能遇到相同的問(wèn)題。于是這時(shí)操作系統(tǒng)就會(huì)把程序當(dāng)?shù)?時(shí)的內(nèi)存內(nèi)容 dump 出來(lái)(現(xiàn)在通常是寫(xiě)在一個(gè)叫 core 的 file 里面),讓 我們或是debugger 做為參考。這個(gè)動(dòng)作就叫作 Linux core dump。
3.為何會(huì)發(fā)生 Linux core dump?
前面說(shuō)過(guò),在程序當(dāng)?shù)魰r(shí)出錯(cuò)。在 C/C++語(yǔ)言中,最常發(fā)生錯(cuò)誤的地方就是指 針有問(wèn)題。您可以利用 core 文件和 debugger 把錯(cuò)誤找出來(lái)(要怎麼在 debugger 中使用 core 文件?man 一下gdb 吧?。?。
4.我可以把 core 文件刪掉嗎?
如果你不會(huì)、不能、不需要修改程序,那就放心地把它刪除了吧!要怎麼才不會(huì)讓 core 文件出現(xiàn)?如果用的是tcsh的話(huà), 以試著在 .tcshrc 里加一行:limit coredumpsize 0
如果用的是bash的話(huà), 在/etc/profile里加上(或者修改)一條:ulimit -c 0
5.有一招, 可以讓你看出 core ***用的地方 
gdb -c core進(jìn)去后打 where, 就可以 show 出你是在程序哪一行當(dāng)?shù)舻?還有在當(dāng)?shù)魰r(shí)在哪個(gè) function 里, 這個(gè) function是被哪個(gè)function 所 call 的, 而這個(gè) function 又是被哪個(gè)function所 call 的.... 一直到 main()由這個(gè)信息, 可以找出五六成的 bug........ 屢試不爽但, 先決條件, 當(dāng)你在 compile 時(shí)必須把 debug information的選項(xiàng)打開(kāi) 不然, 就會(huì)出現(xiàn)一大堆你看不懂的東西,而不是你喜歡的源程序。
【編輯推薦】















 
 
 


 
 
 
 