Linux生成core文件、core文件路径设置

摘要:
当堆栈溢出可能发生时,它将占用更多内存。2.设置核心文件的名称和文件路径。默认生成路径:输入与运行命令的可执行文件相同的路径。默认生成名称:默认情况下为core。

1.设置core文件大小

列出所有资源的限制: ulimit -a
1240
ulimit -a.png
或者查看core file size: ulimit -c

core file size:
unlimited:core文件的大小不受限制
0:程序出错时不会产生core文件
1024:代表1024k,core文件超出该大小就不能生成了

设置core文件大小: ulimit -c fileSize
注意:

尽量将这个文件大小设置得大一些,程序崩溃时生成Core文件大小即为程序运行时占用的内存大小。可能发生堆栈溢出的时候,占用更大的内存

2.设置core文件的名称和文件路径

默认生成路径:输入可执行文件运行命令的同一路径下
默认生成名字:默认命名为core。新的core文件会覆盖旧的core文件

a.设置pid作为文件扩展名

1:添加pid作为扩展名,生成的core文件名称为core.pid
0:不添加pid作为扩展名,生成的core文件名称为core
修改 /proc/sys/kernel/core_uses_pid 文件内容为: 1
修改文件命令: echo "1" > /proc/sys/kernel/core_uses_pid
或者
sysctl -w kernel.core_uses_pid=1 kernel.core_uses_pid = 1

b. 控制core文件保存位置和文件名格式

修改文件命令: echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
或者:
sysctl -w kernel.core_pattern=/corefile/core-%e-%p-%t kernel.core_pattern = /corefile/core-%e-%p-%t
可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
以下是参数列表:
%p - insert pid into filename 添加pid(进程id)
%u - insert current uid into filename 添加当前uid(用户id)
%g - insert current gid into filename 添加当前gid(用户组id)
%s - insert signal that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加导致产生core的命令名

3.测试是否能生成core文件

kill -s SIGSEGV $$
查看/corefile目录下是否生成了core文件

4.调试core文件

Eg. test.c

#include<stdio.h>
int main()
{
      int *p = NULL;
      *p = 0;
      return 0;
}

root@ubuntu:~# gcc -o test test.c
root@ubuntu:~# ./test
Segmentation fault (core dumped)
bingo:这里出现段错误并生成core文件了
在/corefile目录下发现core-test-31421-1476266571
开始调试
gdb ./test core-test-31421-1476266571

1240
gdb


根据堆栈信息查看bu

免责声明:文章转载自《Linux生成core文件、core文件路径设置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Node.js及npm详细安装教程(转)Python虚拟环境pyenv、venv(pyvenv)、virtualenv之间的区别,终于搞清楚了!下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux下离线安装svn服务器并配置

一、下载相应的包 subversion-1.8.18.tar.gz   下载地址:http://subversion.apache.orgsqlite-autoconf-3190300.tar.gz 下载地址:http://www.sqlite.orgapr-1.5.2.tar.gz,apr-util-1.5.4.tar.gz 下载地址:http://ar...

Linux centos 安装 maven 3.5.4

  一、maven下载   1、官方下载 打开网址:http://maven.apache.org/download.cgi 下拉滚动条,找到标记处并点击 选择自己想要的版本,我这里选择的是 3.5.4,然后选择 binaries/, 鼠标右键 apache-maven-3.5.4-bin.tar.gz 复制链接 到linux里 wget https:...

Linux下解压缩文件命令总结

---------------------------------------------tar命令: -v 可视化-c 新建包-f 指定文件名(除非你用默认用户名)-x 解压target.tar-r 增加file文件到target.tar-t 列出target.tar中的文件-u 更新target.tar中的file文件-z 调用gzip-j 调用bzi...

linux内核驱动中对文件的读写 【转】

本文转载自:http://blog.chinaunix.net/uid-13059007-id-5766941.html 有时候需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据。在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主 要有: filp_open() filp_close(), vfs...

Linux项目部署

Linux 项目部署 Chmod 777 绝对路径  ——  修改文件夹权限 Linux 上传下载文件 rz  上传文件    在shell终端仿真器中输入命令  即可从弹出的对话框中选择本地磁盘上的文件,利用Zmodem上传到服务器当前路径下。 sz 下载文件 在shell终端仿真器中输入命令 即可利用Zmodem将文件下载到本地某目录下。 下载的文件...

linux系统redhat7.9 安装R(编译安装)

查看系统: [root@rhel7 home]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.9 (Maipo) [root@rhel7 home]# hostnamectl Static hostname: rhel7 Icon name: c...