Core Dump技術介紹

來源:互聯網
上載者:User
 

在開發和使用Linux程式時,我們最怕的就是莫過於程式莫明其妙的當掉了,雖然對整個系統來說是沒有什麼影響,但對於程式使用尤其是程式開發人員來說,這顯然是難以忍受的,有這樣一種技術,作業系統把程式當掉時的內容儲存起來,讓我們在程式開發時作一個調試參考。 1、 什麼是core dump?Core,即core memory, 指由一系列小當納圈形的磁性材料組成的儲存空間,這裡不過是沿用了這一稱呼,而dump就是堆放的意思。core dump又叫核心轉儲, 當程式運行過程中發生異常, 程式異常退出時, 由作業系統把程式當前的記憶體狀況儲存在一個core檔案中, 叫core dump. 2、 如何開啟core dump支援?有的作業系統並沒有預設開啟core dump支援,需要用ulimit -c unlimited語句進行設定,core檔案產生的位置一般在程式啟動並執行目前的目錄下,檔案名稱為core.進程號(當然不同的系統也許有所不同,可以查看相手冊對路徑和檔案名稱進行設定). 3、 Core dump的使用方法首先應該在用gcc進行編譯時間選擇-g選項,以便起動debug支援,產生可執行檔時ex,./ex運行可執行檔,如果程式當掉,則會產生一個core檔案,假設為core.1568,則gdb ex core.1568進入gdb,然後再用where命令進行查看即可。 4、 舉例說明假設My Codemain.c為:

#include <stdio.h>
int div(int i, int j)
...{
    return i / j;
}
int main()
...{
    int i = 2;
    int j = 0;
    printf("%d ", div(i, j));
    return 0;
}

顯然有一個被零除的錯誤,用gcc –g main.c –o main進行編譯,然後./main執行,不可避免的程式要down掉,然後用gdb main core檔案名稱 進行分析,然後你就能看到分析結果,採用這種方法,可以找到程式啟動並執行大部分bug.5、其它-用kill命令查詢訊號的名稱和值有時候core dump顯示的結果是一些訊號的值,這時需要對這些值進行查詢,這時要用到kill命令。Kill –l   :列出所有訊號的名稱和值Kill –l val:查詢值為val的訊號名稱Kill –l signame: 查詢signame訊號的值。本文總結了core dump技術的基本使用方法,並進行了舉例,對於初學Linux程式開發人員來說,多多少少會有點協助。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.