core是unix系統(tǒng)的內(nèi)核磺芭。當(dāng)你的程序出現(xiàn)內(nèi)存越界的時(shí)候,操作系統(tǒng)會(huì)中止你的進(jìn)程醉箕,并將當(dāng)前內(nèi)存狀態(tài)倒出到core文件中钾腺,以便進(jìn)一步分析。
linux系統(tǒng)下執(zhí)行代碼讥裤,不能正常運(yùn)行垮庐,程序會(huì)core,或者直接離開坞琴,不會(huì)core。
bug和操作系統(tǒng)或硬件的保護(hù)機(jī)制都會(huì)導(dǎo)致程序異常終止逗抑,操作系統(tǒng)會(huì)kill掉這些進(jìn)程并產(chǎn)生core文件剧辐。程序員可以通過core文件來找出問題所在。 它記錄了程序掛掉時(shí)詳細(xì)的狀態(tài)描述邮府。
什么是core dump
Core的意思是內(nèi)存, Dump的意思是扔出來, 堆出來.
開發(fā)和使用 Unix程序時(shí), 有時(shí)程序莫名其妙的down了, 卻沒有任何的提示(有時(shí)候會(huì)提示core dumped). 這時(shí)候可以查看一下有沒有形如core.進(jìn)程號(hào)的文件生成, 這個(gè)文件便是操作系統(tǒng)把程序down掉時(shí)的內(nèi)存內(nèi)容扔出來生成的, 它可以做為調(diào)試程序的參考.
core dump又叫核心轉(zhuǎn)儲(chǔ), 當(dāng)程序運(yùn)行過程中發(fā)生異常, 程序異常退出時(shí), 由操作系統(tǒng)把程序當(dāng)前的內(nèi)存狀況存儲(chǔ)在一個(gè)core文件中, 叫core dump.
如何使用core文件
gdb -c core文件路徑 [應(yīng)用程序的路徑]
進(jìn)去后輸入where回車, 就可以顯示程序在哪一行當(dāng)?shù)舻? 在哪個(gè)函數(shù)中.
為什么沒有core文件生成呢?
有時(shí)候程序 down了, 但是core文件卻沒有生成. core文件的生成跟你當(dāng)前系統(tǒng)的環(huán)境設(shè)置有關(guān)系, 可以用下面的語句設(shè)置一下, 然后再運(yùn)行程序便成生成core文件.
ulimit -c unlimited
core文件生成的位置一般于運(yùn)行程序的路徑相同, 文件名一般為core.進(jìn)程號(hào)