如何在我的Linux C ++程序中启用核心转储

我的程序是用C ++编写的。 用gcc编译,用-g3 -O0 -ggdb标志。 当它崩溃时,我想打开它的核心转储。 它创build核心转储文件,还是我需要做一些事情来启用核心转储创build,在程序本身,或在计算机上执行它? 这个文件的创build地点是什么?

你需要设置ulimit -c 。 如果此参数为0,则不会创buildcoredump文件。 所以这样做: ulimit -c unlimited并检查一切是否正确ulimit -a 。 coredump文件是在应用程序完成时创build的,例如不适当的东西。 我的系统上的文件名是core.<process-pid-here>

你可以在程序中这样做:

 #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); 

默认情况下,许多configuration文件默认为0核心文件大小,因为普通用户不知道如何处理它们。

在运行你的程序之前,先试试ulimit -c unlimited