我的程序是用 C++ 编写的。使用 gcc 编译,使用 -g3 -O0 -ggdb 标志。当它崩溃时,我想打开它的核心转储。它是创建核心转储文件,还是我需要在程序本身或执行它的计算机上创建核心转储文件?这个文件是在哪里创建的,它的名字是什么?
问问题
113856 次
3 回答
110
你需要设置ulimit -c
. 如果此参数为 0,则不会创建核心转储文件。所以这样做:ulimit -c unlimited
并检查一切是否正确ulimit -a
。coredump 文件是在应用程序完成某些不适当的操作时创建的。我系统上的文件名是core.<process-pid-here>
.
于 2010-05-27T08:02:54.427 回答
53
您可以在程序中这样做:
#include <sys/resource.h>
// 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);
于 2013-03-13T20:31:16.037 回答
14
默认情况下,许多配置文件默认为 0 核心文件大小,因为普通用户不知道如何处理它们。
ulimit -c unlimited
在运行程序之前尝试。
于 2010-05-27T08:03:59.243 回答