在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.youkuaiyun.com/kq1983/article/details/83443907

本文详细介绍了如何在Linux系统中设置coredump文件大小为0但仍能捕获core文件的方法,包括临时、半永久和永久设置,以及C/C++代码中通过`setrlimit`实现的设置方法。
4756

被折叠的 条评论
为什么被折叠?



