linux core文件默认位置,linux下core文件
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文件相关推荐
- Linux和Windows的遍历目录下所有文件的方法对比
首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #inclu ...
- Windows 下的 terminal pro 打开终端 总是在默认位置 怎么在当前文件中打开呢
Windows 下的 terminal pro 打开终端 总是在默认位置 怎么在当前文件中打开呢 step1 这里先打开终端 - step2 找到编辑json文件 step3 ctrl + f 查找到 ...
- 如何把C盘里的文件默认位置更改到D盘指定目录?
如何把C盘里的文件默认位置更改到D盘指定目录? 1.打开运行,输入 %HOMEPATH% 2.以"桌面"文件转移到D盘目录为例(其他文档类比进行操作) 3.鼠标右键"桌面 ...
- linux查看文件元数据,Linux切换目录、查看目录下的文件、文件类型介绍和查看文件的元数据信息...
本篇博客介绍几个Linux的基础命令:写的如有不足,还望读者不吝赐教! 切换目录 cd(ChangeDirectory)切换工作目录 语法:cd [要切换的目录] cd:进入用户的宿主目录(回家) ...
- linux spool目录 删除,Linux知识:/var/spool/clientmqueue 下垃圾文件删除
Linux操作系统中的/var/spool/clientmqueue/目录下存在大量文件. 原因分析:系统中有用户开启了 cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的 ...
- [Linux] Linux 客户端NFS挂载后目录下中文名文件乱码
0x0 场景 服务端:Windows 2008R2 NFS共享目录D:/TEST 客户端:Linux/Centos 7.5 Centos 7.5 客户端NFS挂载 Windows2008R2 共享目录 ...
- linux grep查找具体位置,Linux grep 查找字符所在文件(grep详解)
查找字符所在文件 grep -ir "S_ROLE" ./* -i 不区分大小写 -r 查找字符出处 -a --text #不要忽略二进制的数据. -A --afte ...
- java linux 读取文件是否存在_linux下判断文件和目录是否存在
1.前言 工作中涉及到文件系统,有时候需要判断文件和目录是否存在.我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询. 2.stat系列函数 stat函数用来返回与文 ...
- linux中useradd存放位置,Linux useradd命令详解:添加新的系统用户
linux 系统中,可以使用 useradd 命令新建用户,此命令的基本格式如下: [root@localhost ~]#useradd [选项] 用户名 该命令常用的选项及各自的含义,如表 1 所示 ...
最新文章
- vb.net2019-下载文件
- wp8.1 Study11:APP里文件读写和使用XML和Json序列化
- Python 之 sorted()排序详解 适用于任意可迭代对象比如列表,字典等
- 【iOS开发】An Apple ID with identifier xxxis not available. Please enter a different string.
- xadmin获取mysql_Django2集成xadmin详解-5-获取登录用户信息并填充相应Model字段
- 第二课:电场与偶极子
- 小白功能测试项目实战篇01-dtsshop开源商城项目之【会员管理】模块测试点分析
- 抖音:红、蓝海品类,如何创作优质内容?
- 网易公开课视频及字幕下载
- 创建Visual Studio离线升级包
- 【CG原画插画教程】板绘基础如何学习
- android+美拍加表情,美拍怎么添加表情文字在哪
- 华芯通服务器芯片将于今年年底前上市
- 使用DOS命令操作MySQL
- maven学习笔记【二】私服Nexus
- (No operations allowed after connection closed.).Possibly consider using a shorter maxLifetime value
- Day 7/100:Python列表
- 【SAP Abap】SAP增强开发总结
- Android中设置定时闹钟以及AlarmManager详解
- 西门子HMI精智面板密码超期功能