Linux中生成Core Dump系統異常信息記錄文件處理方法介紹
1 什麼是 Core Dump
Core Dump 又叫核心轉儲。在程序運行過程中發生異常時,將其內存數據保存到文件中,這個過程叫做 Core Dump。
2 Core Dump 的作用
在開發過程中,難免會遇到程序運行過程中異常退出的情況,這時候想要定位哪裏出了問題,僅僅依靠程序自身的信息打印(日誌記錄)往往是不夠的,這個時候就需要 Core Dump 文件來幫忙了。
一個完整的 Core Dump 文件實際上相當於恢復了異常現場,利用 Core Dump 文件,可以查看到程序異常時的所有信息,變量值、棧信息、內存數據,程序異常時的運行位置(甚至記錄代碼行號)等等,定位所需要的一切信息都可以從 Core Dump文件獲取到,能夠非常有效的提高定位效率。
3 如何生成 Core Dump
3.1 Core Dump 文件生成開關
Core Dump 文件的生成是由Core文件大小限制,Linux中默認的Core文件大小設置爲零,也就是不生成 Core Dump 文件,可以使用ulimit -c命令來查看當前的Core文件大小限制。
要生成 Core Dump 文件,只需要執行下面的命令設置Core文件的大小即可(其中filesize參數的單位爲KByte):
ulimit -c filesize
如果要設置Core文件大小無限制(即把程序完整的運行內存都保存下來),則執行如下命令:
ulimit -c unlimited
3.2 Core Dump 文件名設置
Core Dump 文件默認的名字爲core,而且新的Core文件會把老的覆蓋,這樣我們只能看到最後一次的 Core Dump 信息,可以通過設置Core文件名稱模板,使每次生成的 Core Dump 文件區分開來。
Core Dump 文件的命名規則定義在/proc/sys/kernel/core_pattern文件中,規則中還可以加入預設的變量來更好的區分Core文件,支持的變量列表如下:
%% %字符 %p 進程ID(PID) %u 用戶ID(UID) %g 用戶組ID %s 觸發 Core Dump 的信號 %t 觸發 Core Dump 的時間(單位爲秒,從 1970-01-01 00:00:00 開始計算) %h 主機名稱(主機名可以通過uname命令來查看) %e 程序名稱(無路徑信息) %E 程序的路徑名稱(路徑中的/會被!替代) %c Core文件的'限制大小值(Linux 2.6.24版本後開始支持)
注:Core Dump 文件名的最大長度爲128字節(在 Linux 2.6.19 版本前,最大長度爲64字節)。
例如:可以通過下面的命令,生成文件名爲core-程序名稱-進程ID-時間的 Core Dump 文件:
echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern
從 Linux 2.4 版本開始,提供了一種比較原始的Core文件名設置方式,直接設置/proc/sys/kernel/core_uses_pid文件中的值爲1,生成的Core文件名中便會自動加上後綴,即生成的文件名爲這種形式。執行下面的命令可以設置該值:
echo "1" > /proc/sys/kernel/core_uses_pid
4 如何使用 Core Dump
有了 Core Dump 文件後,可以使用GDB來加載分析,執行如下命令(假設可執行程序名稱及路徑爲/home/hutaow/test_dump,生成的Core文件名爲core):
gdb /home/hutaow/test_dump -c core
加載完成後,即可以在GDB中查看程序異常時的各種運行信息了(查看變量值、線程信息、調用棧、反彙編等等)。
相關文章
-
託福英語寫作範文:Examinations exert a pernicious influence on educat
We might marvel at the progress made in every field of study, but the methods of testing a person’s knowledge and ability remain as primitive as ever they were. It really is extraordinary that after -
PetaLinux操作系統在MicroBlaze系統中的移植解析
大多使用linux的人都對WINE程序比較熟悉,WINE程序是可以在不需要Windows的情況下使用Windows的軟件。下面是小編整理的關於PetaLinux操作系統在MicroBlaze系統中的移植,希望大家認真閱讀!FPGA生產商Xilinx公司提供了全 -
Linux系統中hexdump的命令彙總
hexdump是Linux系統中用來查看文件十六進制編碼的命令,配合不同的參數其作用也有所不同,下面小編就給大家介紹下Linux中hexdump命令的用法,不瞭解的`朋友不妨來學習一下。查看一些二進制文件的內容,比如二進制文件中包含 -
八年級英語下冊《Would you mind keeping your voice down》教案
一、教材分析“Would you mind keeping your voice down ?”是一篇有關禮節的閱讀,是對整個單元的昇華,在前幾節課中,學生運用了Would you mind...? 有禮貌地對別人發出請求,本節課通過文章進一步加深對有禮貌請求句式的 -
Excel中Sumproduct函數的使用方法
你還在爲Excel中Sumproduct函數的使用方法而苦惱嗎,今天小編教你Excel中Sumproduct函數的使用方法,讓你告別Excel中Sumproduct函數的使用方法的煩惱。本文主要從四方面對Excel函數進行講解,1.函數的含義,2.函數的語法格式 -
Module 3 Unit 2 I love my pocket calculator說課稿
一、 說教材1、 教材分析這單元選自外研社出版的《新標準英語》第四冊第三模塊第二單元。新標準英語第四冊是英語學習難度逐漸增加的關鍵時期,儘管學生在二年級上學期學習了字母,但所學習的英語知識並不很多,本學期 -
英語閱讀:Covergirl unveils empowering brand update
It may have been founded 60 years ago old, but US cosmetics giant Covergirl is proving that you're never too old to reinvent yourself.The Coty-owned makeup brand, which has been attracting attenti -
Linux處理Tomcat異常的方法步驟
在Linux系統中如果tomcat中的程序不穩定,tomcat就會報出的異常。這也是使用tomcat經常會出現的問題。本文就來教大家Linux處理Tomcat異常的教程。一、 PermGen space的全稱是Permanent Generation space,是指內存的永久 -
關於javascript中encodeURI和decodeURI的使用方法
關於java script中encodeURI和decodeURI的使用方法 一、基本概念encodeURI和decodeURI是成對來使用的,因爲瀏覽器的`地址欄有中文字符的話,可以會出現不可預期的錯誤,所以可以encodeURI把非英文字符轉化爲英文編 -
Thinkpad筆記本開機顯示Tointerrruptnormalstartup解決方法
Thinkpad筆記本開機顯示To interrrupt normal startup的解決方法1、先等待5-6分鐘,如果系統又恢復了正常,說明可能是系統硬盤或者風扇區出了問題;2、假如過了5-6分鐘依然沒有反應,則可嘗試先拆掉筆記本電池在裝上;3、或