linux下 gdb+coredump 調試偶發crash的程序
阿新 • • 發佈:2018-12-02
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的程序