LS3-Coredump程式故障分析之學習筆記
阿新 • • 發佈:2019-02-04
Coredump程式故障分析
定義/功能:
Core Dump又叫核心轉存。當程式在執行過程中發生異常,這時Linux系統可以把程式出錯時的記憶體內容儲存在一個core檔案中,這個過程就叫Core Dump。
Core Doump主要對付segment fault(段錯誤),產生原因主要有:
1. 陣列訪問越界
2. 訪問空指標
3. 棧溢位
4. 修改只讀記憶體
GDB除錯程式的一般流程
1. 編寫程式(tst.c)
2. 使能Core Dump(預設關閉)
命令:ulimit -c unlimited(開啟)
ulimit -c O
3. 當程式出現錯誤時使用gdb檢視core檔案,定位出錯位置
命令:gdb 程式名 core檔名
錯誤例項:
1. 訪問空指標
#include <stdio.h>
#include <stdlib.h>
void main()
{
int *ptr = NULL;
*ptr = 0;
}
2. 訪問只讀記憶體
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
char *ptr = "123456"; //正確方式:ptr[] = "123456";
ptr[0] = '7';
}