GDB创建核心文件

时间:2011-01-05 22:50:05

标签: c gdb core

好吧所以不要问为什么,但我想创建一个我制作的测试程序的核心文件。它没有损坏,也没有搞砸,但我想生成它的核心文件。下面是代码:

#include <stdio.h>
int main(){
printf("TEST");
}

正如我所说的那么简单,但我希望能够转储它的核心。我该怎么做? 顺便说一下,我在使用Ubuntu 10.04

4 个答案:

答案 0 :(得分:10)

在加载可执行文件的gdb命令提示符下,发出generate-core-file命令。

答案 1 :(得分:6)

如果您可以更改程序,则添加对abort()的调用将在许多unix环境中生成核心转储。

您需要确保已启用核心文件。未生成核心文件的最常见原因是零大小核心 ulimit 。使用ulimit -c命令检查并使用ulimit -c unlimited重置为零。

如果您不想更改程序,可以使用kill命令发送中止信号:kill -SIGABRT <pid>但是使用这么短的程序,您可能不得不使用脚本,即便如此在进程退出之前无法获取信号。

使用bash你可以尝试这样的事情(假设你的程序被称为a.out并且在当前目录中):

./a.out & kill -SIGABRT $!

&说在后台运行,$!是最近执行的后台命令的PID。

答案 2 :(得分:6)

在gdb中加载程序,设置断点,运行到断点,然后

  

(gdb)generate-core-file

答案 3 :(得分:0)

另一种选择是使用 - gcore命令。