GDB

发布时间 2023-08-04 16:27:59作者: 小小灰迪

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 byte
  • ulimit -c unlimited:不限大小
    永久修改:
sudo gedit /etc/profile
# 在文件末尾加入下面一行
ulimit -c unlimited
# 保存使生效
source /etc/profile
ulimit -a