GDB
coredump
修改coredump文件位置
查询文件位置
cat /proc/sys/kernel/core_pattern
# 默认值是core,表示当前目录。否则就是在指定目录下。
更改 coredump 文件路径的方法分两种:临时更改方式与永久更改方式:
永久更改方法:修改 ubuntu 系统下 /etc/sysctl.conf 文件
sudo vim /etc/sysctl.conf
# 在 /etc/sysctl.conf 文件中添加如下一行:
kernel.core_pattern=%t_%e_%p_%c.core # 只在可执行程序崩溃的地方生成
# kernel.core_pattern = /path/to/%t_%e_%p_%c.core
# sudo sysctl -w kernel.core_pattern=%t-%e-%p-%c.core
# 保存后使生效
sudo sysctl -p /etc/sysctl.conf
字符串的格式由一些特殊字符组成,其中每个字符代表一个特定的信息:
- %t:时间戳。代表生成核心转储文件的时间戳。
- %e:程序名。代表程序的执行文件名。
- %p:进程号。代表崩溃进程的进程号。
- %u:用户ID。代表崩溃进程的用户ID。
- %g:组ID。代表崩溃进程的组ID。
- %s:信号编号。代表导致崩溃的信号编号。
- %h:主机名。代表当前主机名。
- %c:核心转储文件的文件名。代表核心转储文件的前缀
修改coredump文件大小
查看大小:ulimit -a
core file size (blocks, -c) 0 # 默认为0,也就是不生成coredump文件
修改coredump文件大小:
临时修改:
ulimit -c 5
:这里的5单位是block,1 block=512 byteulimit -c unlimited
:不限大小
永久修改:
sudo gedit /etc/profile
# 在文件末尾加入下面一行
ulimit -c unlimited
# 保存使生效
source /etc/profile
ulimit -a