Stack overflow地址:How to enable core dump in my Linux C++ program - Stack Overflow
翻译:
我的程序是C++写的。使用gcc编译期,带有 -g3 -O0 -ggdb的参数标识。当它崩溃时,我想要打开core dump。它是否创建core dump文件,或者我需要做一些什么来开启core dump让程序自己创建,或者在电脑上哪里执行什么?文件在哪里被创建并且叫什么名字呢?
Answers1:
你需要设置 ulimit -c。如果你这个参数的值为0的话,coredump文件就不会被创建。所以这么做:ulimit -c unlimited并且检查ulimit -a的所有值是否都正确。当程序遇到一些不正确的东西时会创建coredump文件。在我的系统上core文件的名字是 core.进程号。
Answers2:
你可以在你的程序里面这么做:
#include
// core dumps may be disallowed by parent of this process; change that
struct rlimit core_limits;
core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &core_limits);
Answers3:
默认情况下,很多配置都是0 coredump的文件大小,因为普通用户不知道如果处理它们。
尝试使用 ulimit -c unlimited命令在运行你的程序之前。
网友评论