Linux:修改ulimit -c生成core文件
来源:互联网 发布:淘宝网豆豆鞋 编辑:程序博客网 时间:2024/06/06 01:25
Linux:修改ulimit -c生成core文件
每个进程其实都有一组资源限制,而这些资源限制会随着当前进程的fork而继承下来。
shell本身是有一组资源限制的,如果你在某个shell下直接执行一条命令,那么这个新进程一般就继承了shell的资源限制。
今天工作中遇到一个不确定的bug,为了测试那段代码到底会不会搞崩,就运行它到bug处,看看有没有出core文件==》
一直没有出core文件,后来发现是ulimit -c设置的是0,导致没有出core文件。
我们通常可以用ulimit来设置shell的资源限制:
man手册是这么描述的:
Provides control over the resources available to the shell and to processes started by it, on systems that allow such control.
先来看看一段错误的代码,这段代码将导致段错误:
#include <stdio.h>#include <stdlib.h>int main(){ char *str = "hello, world!"; str[0] = 0; return 0;}
编译并运行它:
[test1280@localhost 20170623]$ !ggcc -o main main.c[test1280@localhost 20170623]$ ./main段错误[test1280@localhost 20170623]$ ll总计 12-rwxrwxr-x 1 test1280 test1280 6588 06-23 20:43 main-rw-rw-r-- 1 test1280 test1280 109 06-23 20:32 main.c
恩,段错误啦,但是并没有core文件==》
查看现在的资源限制,对core文件大小的设置:
[test1280@localhost 20170623]$ ulimit -c0
-c指的是允许生成的core的大小,单位字节;
输出是0,那就是最多只能生成0字节==》即不允许生成core文件;
How?
修改对core文件大小的限制:
[test1280@localhost 20170623]$ ulimit -c unlimited[test1280@localhost 20170623]$ ulimit -cunlimited[test1280@localhost 20170623]$ ./main段错误 (core dumped)[test1280@localhost 20170623]$ ll总计 100-rw------- 1 test1280 test1280 172032 06-23 20:48 core.25599-rwxrwxr-x 1 test1280 test1280 6588 06-23 20:43 main-rw-rw-r-- 1 test1280 test1280 109 06-23 20:32 main.c
看到了吗?
关键是:
ulimit -c unlimited
设置对core文件大小是无限的。
当然,我们可以使用:
ulimit -c 100
注意这里的100单位是KB。
恩,这下要记住,需要生成core文件,首先看看能生成最大的core文件是多大(Max磁盘占用空间),如果比较小,例如0什么的,可以设置大一些。
PS:
有个小现象:
[test1280@localhost ~]$ unlimit -c-bash: unlimit: command not found[test1280@localhost ~]$ ulimit -c0[test1280@localhost ~]$ ulimit -c unlimited[test1280@localhost ~]$ ulimit -cunlimited[test1280@localhost ~]$ ulimit -c 100[test1280@localhost ~]$ ulimit -c100[test1280@localhost ~]$ ulimit -c unlimited-bash: ulimit: core file size: cannot modify limit: 不允许的操作[test1280@localhost ~]$ ulimit -c 50[test1280@localhost ~]$ ulimit -c50
我发现:
登录shell时一般设置的ulimit -c是0;
在当前shell修改ulimit -c到一个较小值后(假定这个值是100),那么后续ulimit -c指定的值必须要比之前的较小值更小(比100还要小)…不过,重新登录shell就好啦,就可以再次重新设置啦(比如unlimited)。
我们可以将ulimit -c xxx写入登录时的profile中嘛…对吧,嘿嘿。
- Linux:修改ulimit -c生成core文件
- gdb ulimit 生成core文件
- CentOS 设置 ulimit -c unlimited 生成core文件
- Linux 系统设置 ulimit 以及 Core文件的生成
- Linux 系统设置 ulimit 以及 Core文件的生成
- Linux 系统设置 ulimit 以及 Core文件的生成
- Linux 系统设置 ulimit 以及 Core文件的生成
- Linux 系统设置 ulimit 以及 Core文件的生成
- ulimit -c unlimited linux系统对core文件限制解除
- linux下开启程序崩溃生成core文件开关之ulimit详解
- Linux 生成 core文件
- linux 修改 ulimit
- 修改linux ulimit 限制
- linux修改最大文件链接数open files/ulimit -n
- linux core文件生成配置
- Linux生成core dump文件
- 修改linux资源限制---ulimit
- 修改linux资源限制---ulimit
- JavaBean简单介绍
- 2017.6.23 消息的分类
- hdu2602
- 【原创】在java下实现的平衡二叉树--转载请注明出处
- css颜色代码大全
- Linux:修改ulimit -c生成core文件
- Linux系统编程——vfork() 函数详解
- java 外部包jar 带包package 命令行编译运行
- opencv基本矩阵操作
- 有效的mysql优化sql语句查询的方法
- 静态库lib的编写
- 【jquery】适用Deferred实现jquery将请求封装成函数
- QTextEdit更改特定某些行的字体格式
- Spring Boot用浏览器关闭程序