我們在編寫服務端程序的時候,由於多線程並且環境復雜,程序可能在不確定條件的情況下宕掉,還不好重新,這是我們如何獲取程序的出錯信息,一種方法通過打日志,有時候一些錯誤日志也不能體現出來,這時就用到我們的core dump文件了。
通常情況下coredmp包含了程序運行時的內存,寄存器狀態,堆棧指針,內存管理信息等。可以理解為把程序工作的當前狀態存儲成一個文件。許多程序和操作系統出錯時會自動生成一個core文件。
1 我們系統一般默認是吧core dump 關掉的,可以通過ulimit -c 查看如果是0就是關閉了,我們可以通過ulimit -c n來打開,你是設置coredump文件的最大值kb,或者直接設置不限制
ulimit –c unlimited
2 設置完畢后我們編寫一個出錯的程序實驗一下
//main.cpp
int main()
{
int *xcj = 0;
*xcj = 10;
return 0;
}
3 編譯一下,記得加-g 將調試信息編入執行程序,再運行程序
g++ main.cpp -o main -g
./main
4 使用gdb查看調試信息
gdb main core
通過gdb就可以看到錯誤的信息了