linux下core文件

参考:http://www.cnblogs.com/li-hao/archive/2011/09/25/2190278.html

并整合其他参考资料

在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。

1.core文件的生成开关和大小限制

(1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。

临时开关 :echo 1 >  /proc/sys/fs/suid_dumpable  永久有效:/sbin/sysctl -w fs.suid_dumpable=1

若程序调用了seteuid()/setegid()改变了进程的有效用户或组,则在默认情况下系统不会为这些进程生成Coredump。如果你当初是以用户A运行了某个程序,但在ps里看到的这个程序的用户却是B的话,那么这些进程就是调用了seteuid了。为了能够让这些进程生成core dump,需要将/proc/sys/fs/suid_dumpable 文件的内容改为1(一般默认是0)。

(2)使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit -c unlimited,则表示core文件的大小不受限制。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文件的时候,gdb会提示错误。

2.core文件的名称和生成路径

core文件生成路径:

输入可执行文件运行命令的同一路径下。

若系统生成的core文件不带其它任何扩展名称,则全部命名为core。新的core文件生成将覆盖原来的core文件。

(1)/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。文件内容为1,表示添加pid作为扩展名,生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core。

可通过以下命令修改此文件:

echo "1" > /proc/sys/kernel/core_uses_pid

(2)proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。

默认值是:core

默认位置与可执行程序在同一目录下,文件名是core.***,其中***是一个数字。

可通过以下命令临时修改此文件:

echo "/corefile/core-%e-%p-%t" > core_pattern,可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳

永久修改:使用sysctl -w name=value命令。

例:/sbin/sysctl -w kernel.core_pattern=/var/log/%t_%e.core.%p为了更详尽的记录core dump当时的系统状态,可通过以下参数来丰富core文件的命名:

以下是参数列表:

%p - insert pid into filename 添加pid

%u - insert current uid into filename 添加当前uid

%g - insert current gid into filename 添加当前gid

%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 添加命令名

3.core文件的查看

core文件需要使用gdb来查看。

gdb ./a.out

core-file core.xxxx

使用bt命令即可看到程序出错的地方。

以下两种命令方式具有相同的效果,但是在有些环境下不生效,所以推荐使用上面的命令。

(1)gdb -core=core.xxxx

file ./a.out

bt

(2)gdb -c core.xxxx

file ./a.out

bt

什么时候不产生core文件

在下列条件下不产生core文件:

( a )进程是设置-用户-ID,而且当前用户并非程序文件的所有者;

( b )进程是设置-组-ID,而且当前用户并非该程序文件的组所有者;

( c )用户没有写当前工作目录的许可权;

( d )文件太大。core文件的许可权(假定该文件在此之前并不存在)通常是用户读/写,组读和其他读。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29519108/viewspace-2125627/,如需转载,请注明出处,否则将追究法律责任。

linux core文件默认位置,linux下core文件相关推荐

  1. Linux和Windows的遍历目录下所有文件的方法对比

    首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #inclu ...

  2. Windows 下的 terminal pro 打开终端 总是在默认位置 怎么在当前文件中打开呢

    Windows 下的 terminal pro 打开终端 总是在默认位置 怎么在当前文件中打开呢 step1 这里先打开终端 - step2 找到编辑json文件 step3 ctrl + f 查找到 ...

  3. 如何把C盘里的文件默认位置更改到D盘指定目录?

    如何把C盘里的文件默认位置更改到D盘指定目录? 1.打开运行,输入 %HOMEPATH% 2.以"桌面"文件转移到D盘目录为例(其他文档类比进行操作) 3.鼠标右键"桌面 ...

  4. linux查看文件元数据,Linux切换目录、查看目录下的文件、文件类型介绍和查看文件的元数据信息...

    本篇博客介绍几个Linux的基础命令:写的如有不足,还望读者不吝赐教! 切换目录 cd(ChangeDirectory)切换工作目录 语法:cd  [要切换的目录] cd:进入用户的宿主目录(回家) ...

  5. linux spool目录 删除,Linux知识:/var/spool/clientmqueue 下垃圾文件删除

    Linux操作系统中的/var/spool/clientmqueue/目录下存在大量文件. 原因分析:系统中有用户开启了 cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的 ...

  6. [Linux] Linux 客户端NFS挂载后目录下中文名文件乱码

    0x0 场景 服务端:Windows 2008R2 NFS共享目录D:/TEST 客户端:Linux/Centos 7.5 Centos 7.5 客户端NFS挂载 Windows2008R2 共享目录 ...

  7. linux grep查找具体位置,Linux grep 查找字符所在文件(grep详解)

    查找字符所在文件 grep -ir "S_ROLE"  ./* -i 不区分大小写 -r 查找字符出处 -a   --text   #不要忽略二进制的数据. -A   --afte ...

  8. java linux 读取文件是否存在_linux下判断文件和目录是否存在

    1.前言 工作中涉及到文件系统,有时候需要判断文件和目录是否存在.我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询. 2.stat系列函数 stat函数用来返回与文 ...

  9. linux中useradd存放位置,Linux useradd命令详解:添加新的系统用户

    linux 系统中,可以使用 useradd 命令新建用户,此命令的基本格式如下: [root@localhost ~]#useradd [选项] 用户名 该命令常用的选项及各自的含义,如表 1 所示 ...

最新文章

  1. vb.net2019-下载文件
  2. wp8.1 Study11:APP里文件读写和使用XML和Json序列化
  3. Python 之 sorted()排序详解 适用于任意可迭代对象比如列表,字典等
  4. 【iOS开发】An Apple ID with identifier xxxis not available. Please enter a different string.
  5. xadmin获取mysql_Django2集成xadmin详解-5-获取登录用户信息并填充相应Model字段
  6. 第二课:电场与偶极子
  7. 小白功能测试项目实战篇01-dtsshop开源商城项目之【会员管理】模块测试点分析
  8. 抖音:红、蓝海品类,如何创作优质内容?
  9. 网易公开课视频及字幕下载
  10. 创建Visual Studio离线升级包
  11. 【CG原画插画教程】板绘基础如何学习
  12. android+美拍加表情,美拍怎么添加表情文字在哪
  13. 华芯通服务器芯片将于今年年底前上市
  14. 使用DOS命令操作MySQL
  15. maven学习笔记【二】私服Nexus
  16. (No operations allowed after connection closed.).Possibly consider using a shorter maxLifetime value
  17. Day 7/100:Python列表
  18. 【SAP Abap】SAP增强开发总结
  19. Android中设置定时闹钟以及AlarmManager详解
  20. 西门子HMI精智面板密码超期功能

热门文章

  1. java 死锁如何排查_java死锁排查
  2. python-偏函数(Partial function)使用及理解
  3. 人事管理软件为企业提供了哪些价值?
  4. 读《辜新星:时刻调整方向 找到人生的蓝海》有感
  5. JSP 网络书签按钮聚合网站
  6. JsonPath文档
  7. 美国商业服务外包方兴未艾 (华盛顿邮报)
  8. vue-element表格Day.js时间转换时间戳
  9. 一口一口吃掉Hibernate(二)——别被世俗蒙蔽了双眼:Hibernate中Session之get和load方法的真正区别
  10. bzoj1070: [SCOI2007]修车 网络流