一、Core Dump 定義
Core Dump 又叫核心轉存。當程序在運行過程中發(fā)生異常,這時Linux系統(tǒng)可以把程序出錯的內(nèi)存內(nèi)容存儲在一個core文件中,這種過程叫 core Dump。
CoreDump 主要用來對付什么樣的錯誤呢?
Segment fault
Linux 應用程序在運行過程中,經(jīng)常會遇到Segment fault(段錯誤)這樣的錯誤。產(chǎn)生這樣的錯誤的原因有:
數(shù)組訪問越界
訪問空指針
棧溢出
修改只讀內(nèi)存
......
1.1、CoreDump 使能
在Linux系統(tǒng)中,默認是關閉core dump功能的,但是可以使用ulimit命令打開/關閉 core dump 功能。
發(fā)生core dump之后,可以使用gdb進行查看core文件的內(nèi)容,以定位程序出錯的位置。
先編寫如下程序:test.c
使用編譯器編譯,并運行:
gcc -o test -g test.c./test控制臺輸出如下:
這時候使用gdb進行調試:
gdb ./test ./core輸出如下:
這里可以看出GDB 給出了發(fā)生core dump時候的函數(shù)具體位置在 test.c 的12 行。這里打印a的信息的時候。
聯(lián)系客服