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

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

Solutions Collecting From Web of "如何在我的Linux C ++程序中启用核心转储"

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

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

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