core文件在哪里

已经按教程how_to_handle_crash.md · 浙江智臾科技有限公司/Tutorials_CN - Gitee.com 第3.1节开启了core文件。

[tester@cnserver5 ~]$ ulimit -c
unlimited

但忘记改core文件保存路径了
[tester@cnserver5 ~]$ cat/proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e %P %I %h


程序提示了Segmentation fault (core dumped),但是没有找到core文件,这个core去哪里了?

请先 登录 后评论

2 个回答

peter

默认是执行文件的路径,要确保空间足够(至少8G)

请先 登录 后评论
wale

core 文件有两种方式:abrt or coredump,可以通过以下命令查看:

[root@dbhost03 systemd]# sysctl -n kernel.core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e %P %I %h

例如Redhat7 使用abrtd (automatically bug report daemon )服务,core 文件会在/var/spool/abrt/ccpp* 目录下。默认非root用户生成core会被系统自动删除,在messages 日志文件中通常有如下信息:

Jul 24 15:50:22 dbhost03 abrt-hook-ccpp: Process 5070 (kingbase) of user 1001 killed by SIGSEGV - dumping core
Jul 24 15:50:25 dbhost03 abrt-server: Executable '/opt/Kingbase/ES/V8/Server/bin/kingbase' doesn't belong to any package and ProcessUnpackaged is set to 'no'
Jul 24 15:50:25 dbhost03 abrt-server: 'post-create' on '/var/spool/abrt/ccpp-2021-07-24-15:50:22-5070' exited with 1
Jul 24 15:50:25 dbhost03 abrt-server: Deleting problem directory '/var/spool/abrt/ccpp-2021-07-24-15:50:22-5070'

要保留core 不被删除,需要修改 /etc/abrt/abrt-action-save-package-data.conf  文件,并重启abrtd服务。

需要配置的abrtd相关的配置文件,路径,配置项如下:

 

配置文件

需要修改的配置文件里的项

修改值

含义

/etc/abrt/abrt.conf

MaxCrashReportsSize

0

不限制core文件大小

DumpLocation

/xxx/xxx

core文件生成路径

/etc/abrt/abrt-action-save-package-data.conf

ProcessUnpackaged

1

允许捕获未打包的程序,若不配置core不会生成


完整操作步骤如下:

  1. 打开abrtd配置文件 /etc/abrt/abrt-action-save-package-data.conf。

  2. 找到以下行:

ProcessUnpackaged = 0 (可能是ProcessUnpackaged = no)

3. 将0更改为1:

ProcessUnpackaged = 1

4. 保存并关闭文件。

5.打开abrtd配置文件 /etc/abrt/abrt.conf

6. 找到以下配置项:

MaxCrashReportsSize

7.修改MaxCrashReportsSize为0

8.找到以下配置项

DumpLocation

9. 修改为coredump路径(注意这个路径空间得够,至少比maxMemSize大,不配置则默认为/var/spool/abrt)

10. 重新启动abrtd服务:

sudo systemctl restart abrtd.service

 

11. 测试是否能够生成coredump

sleep 100 &

kill -11 <上一个命令返回的进程id>

查看coredump路径下是否生成


请先 登录 后评论