1. 程式人生 > >LS3-Coredump程式故障分析之學習筆記

LS3-Coredump程式故障分析之學習筆記

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'; }