好吧所以不要问为什么,但我想创建一个我制作的测试程序的核心文件。它没有损坏,也没有搞砸,但我想生成它的核心文件。下面是代码:
#include <stdio.h>
int main(){
printf("TEST");
}
正如我所说的那么简单,但我希望能够转储它的核心。我该怎么做? 顺便说一下,我在使用Ubuntu 10.04
答案 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
命令。