GDB创建核心文件

Jac*_*sen 3 c gdb core

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

#include <stdio.h>
int main(){
printf("TEST");
}
Run Code Online (Sandbox Code Playgroud)

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

Kar*_*ldt 10

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


CB *_*ley 6

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

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

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

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

./a.out & kill -SIGABRT $!
Run Code Online (Sandbox Code Playgroud)

&说在后台运行它并且$!是最近执行的后台命令的PID.


小智 6

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

(gdb)generate-core-file