1. 程式人生 > >linux下 gdb+coredump 調試偶發crash的程序

linux下 gdb+coredump 調試偶發crash的程序

etc 以及 如果 ech nbsp inux core文件 amp 修改

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

linux下 gdb+coredump 調試偶發crash的程序