記錄linux 生成crash dump檔案步驟

2021-08-24 18:03:40 字數 1444 閱讀 2289

例如g++ -g test.cpp

ulimit -a

ulimit -c unlimited

unlimited表示無大小限制,也可以指定具體的大小

ulimit -c 1000

表示檔案大小限制為1000kb

若要全域性生效需要在/etc/profile中加入上面的命令ulimit -c 1000,然後source /etc/profile使之生效

/proc/sys/kernel/core_uses_pid

檔案內容為1表示dump檔案以pid為副檔名

/proc/sys/kernel/core_pattern

core_pattern接受的是core檔名稱的pattern,它包含任何字串,並且用%作為轉移符號生成一些標示符,為core檔名稱加入特殊含義。已定義的標示符有如下這些:

%%:相當於%

%p:相當於pid

%u:相當於uid

%g:相當於gid

%s:相當於導致dump的訊號的數字

%t:相當於dump的時間

%e:相當於執行檔案的名稱

%h:相當於hostname

除以上這些標誌位外,還規定:

1、末尾的單個%可以直接去除;

2、%加上除上述以外的任何字元,%和該字元都會被去除;

3、所有其他字元都作為一般字元加入名稱中;

4、core檔案的名稱最大值為64個位元組(包括』\0』);

5、core_pattern中預設的pattern為core;

6、為了保持相容性,通過設定core_uses_pid,可以在core檔案的末尾加上%p;

7、pattern中可以包含路徑資訊。

echo 「/corefile/core-%e-%p-%t」 > /proc/sys/kernel/core_pattern

將會控制所產生的core檔案會存放到/corefile目錄下(/corefile目錄需要提前建立),產生的檔名為core-執行檔名-pid-時間戳

在發生sigsegv時系統會自動在程式目錄下生成core.***x檔案,此即dump檔案;

注意,此時程式不能再註冊sigsegv的處理函式!

使用gdb分析dump檔案:

1.執行gdb:gdb –core=core.***x

2.在gdb中載入符號檔案:file ./a.out

上兩步也可以統一成:gdb a.out core.***x

3.定位到出錯**:where或backtrace,將顯示#x這樣的堆疊資訊

4.檢視更詳細的函式呼叫資訊:frame x,x為#後的數字

生成修改記錄

生成修改記錄 使用方法 將source insight搜尋結果儲存為0829.txt 將該檔案儲存為 pl和0829.txt放在同一目錄下,雙擊執行 結果在生成的result.txt中 use strict my eachfile,line,output,prev,count,ret,prev pa...

DLL生成及使用記錄

環境 vs2013 相關 opencv3.4 tensorflow c版本 上使用了opencv與tensorflow的介面 初始編譯靜態鏈結庫成功 後編譯dll時不成功,經新增opencv的lib與tensorflow.lib編譯通過,生成.dll ilk pdb檔案 這樣直接使用dll沒成功,呼...

python 記錄網頁 生成pdf

以前經常有網頁想儲存或者收藏的需求,有時候收藏了,等到想去看的時候,哎,網頁已過期!臉上笑嘻嘻,心裡 偶然看到這個 記錄下 他這裡是 windows 平台,我 mac 上試了下,如果你是 windows平台 移步他那邊。因為我 mac 上 裝了兩個版本 所以 用pip3 pip3 install p...