1. 程式人生 > >linux下 gdb+coredump 除錯偶發crash的程式

linux下 gdb+coredump 除錯偶發crash的程式

1. 開啟 core dump

檢視是否開啟

ulimit -c

 如果輸出0, 說明沒有開啟。

方法一:使用命令

ulimit -c unlimited

 可以開啟,但是隻對當前終端有效,

方法二: 配置 /etc/profile 檔案

sudo gedit /etc/profile

 在最後新增一行

ulimit -S -c unlimited > /dev/null 2>&1

 可以始終開啟core dump , unlimited 可以改為具體的數字,比方說 1024 來限制 core 檔案的大小。

然後在 bashrc 檔案裡面 source /etc/profile 就可以使每個終端執行的程式 啟動 core dump 了.

2. 設定core檔案的路徑和名字

生成的core file在哪裡?
core file生成的地方是在/proc/sys/kernel/core_pattern檔案定義的。
改動到生成到自己定義的目錄的方法是:

echo "pattern" > /proc/sys/kernel/core_pattern

並且只有超級使用者可以修改這兩個檔案。
"pattern"類似我們C語言列印字串的格式,相關標識如下:
%%: 相當於%
%p: 相當於
%u: 相當於
%g: 相當於
%s: 相當於導致dump的訊號的數字
%t: 相當於dump的時間
%h: 相當於hostname
%e: 相當於執行檔案的名稱
這時用如下命令設定生成的core file到系統/tmp目錄下,並記錄pid以及執行檔名
echo "/tmp/core-%e-%p" > proc/sys/kernel/core_pattern