linux除錯中coredump檔案生成

2021-08-19 20:13:58 字數 682 閱讀 1536

l

inux除錯中,coredump

檔案產生要兩個條件:

一是允許

core

檔案產生,例如你設定

ulimit -c unlimited

。並且對

core

檔案的產生目錄(也就是工作目錄)要有寫許可權。

二是程式收到了產生

core

檔案的訊號,例如

sigabrt

訊號。滿足這兩個條件才能產生coredump,跟編譯時加

-g沒關係。

在下列條件下不產生

core

檔案:(a )

程序是設定-使用者

-id,而且當前使用者並非程式檔案的所有者;

(b )

程序是設定-組

-id,而且當前使用者並非該程式檔案的組所有者;a,

b可以通過設定

/proc/sys/kernel/suid_dumpable

來改變,這樣

suid

的也可以產生

core

檔案(c )

使用者沒有寫當前工作目錄的許可權;

( d )

檔案太大。

core

檔案的許可權

(假定該檔案在此之前並不存在

)通常是使用者讀

/寫,組讀和其他讀。

macOS使用LLDB除錯coredump

對於segmentation fault或者異常退出的程式,macos中使用lldb除錯工具 linux裡是gdb 可以更方便的判斷問題出在 如下 開啟core檔案生成開關 注意這個僅在當前terminal視窗有用 unlimited表示不限制core檔案大小,可以使用 c檢視是否開啟,預設是0 使...

3 GDB程式除錯及Coredum

gdb是gnu發布的一款功能強大的程式除錯工具。gdb主要完成下面三個方面的功能 1 啟動被除錯程式。2 讓被除錯的程式在指定的位置停住。3 當程式被停住時,可以檢查程式狀態 如變數值 1.編譯生成可執行檔案 gcc g tst.c o tst 2.啟動gdb gdb tst 3.在 main函式處...

linux中除錯shell指令碼

原來的指令碼check.sh monfile var log test testmon.txt logfile var log test testmon.log touch monfile 該指令碼是在window裡編輯的,編輯後上傳到linux的 問題 執行後,目錄下出現的檔案是testmon.t...