在linux系统中,如果coredump文件大小设为0,即使程序发生了core dump(segment fault)也没有core文件产生。
设置core file size的方法有:
- 临时设置
只在当前shell有效:
ulimit -c 0
ulimit -c unlimited
- 永久设置
编辑/etc/security/limits.conf,需要重新登录,或者重新打开ssh客户端连接,永久生效
* soft core unlimited
* hard core unlimited
- 半永久设置
vim /etc/profile
相当于每开一个shell时,自动执行ulimit -c unlimited
ulimit -c unlimited
- C/C++代码中设置
#include <sys/resource.h>
void init_core_dump()
{
struct rlimit limit;
memset(&limit, 0, sizeof(limit));
limit.rlim_cur = RLIM_INFINITY; //软限制,表示对资源没有限制
limit.rlim_max = RLIM_INFINITY; //硬限制,这个参数表示对资源没有限制,一定要大于等于rlim_cur值
setrlimit(RLIMIT_CORE, &limit);
}
int main(void)
{
init_core_dump();
return 0;
}
[Ref]
https://www.cnblogs.com/whwywzhj/p/13272653.html
https://blog.csdn.net/kq1983/article/details/83443907