如何在 Ubuntu 中生成核心转储文件

发布于 2024-11-09 22:48:29 字数 172 浏览 3 评论 0原文

我想知道如何在 Ubuntu 中生成核心转储文件。我使用的是 Ubuntu 8.04.1 和 gcc 编译器 4.2.3。我编写了一个简单的 C 程序来生成核心转储。我已经编译了该程序,如 -- gcc -g badpointer.c 。当我运行该程序时,它给出了分段错误,但没有生成核心转储。我还需要做什么才能生成核心转储文件?

I would like to know how to generate a core dump file in Ubuntu. I am using Ubuntu 8.04.1 and gcc compiler 4.2.3. I have written a simple C program to generate a core dump. I have compiled the program as in -- gcc -g badpointer.c . When I run the program its gives segmentation fault but no core dump is generated. What additional things do i have to do to generate a core dump file ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

往日情怀 2024-11-16 22:48:29

Linux

通过以下命令激活您的核心转储:

ulimit -c unlimited

另外,通过以下方式检查 core_pattern 值:

sysctl kernel.core_pattern

查看创建转储的位置(%e 将是进程名称,>%t 将是系统时间)。

您可以在 /etc/sysctl.conf 中更改它,然后通过 sysctl -p 重新加载。

您可以通过以下方式进行测试:

sleep 10 &
killall -SIGSEGV sleep

如果核心转储成功,您将在分段错误指示后看到“(core dumped)”。否则,请再次仔细检查您的 ulimit

另请参阅:


Ubuntu

如果您使用的是 Ubuntu,则转储由 Apport 位于 /var/crash 中,但默认情况下处于禁用状态。

有关更多详细信息,请检查:在 Ubuntu 中哪里可以找到核心转储?


macOS/OS X

在 macOS 中,故障转储位于由崩溃报告器以回溯形式自动创建。
您可以通过执行Console并转到“用户诊断报告”来找到这些崩溃文件部分(在“诊断和使用信息”组下),或者您可以在 ~/Library/Logs/DiagnosticReports 中找到它们。

实际的核心文件在 /cores 中生成。

了解更多:如何在 Mac OS X 中生成核心转储?< /a>

Linux

Activate your coredumps by the following command:

ulimit -c unlimited

Also, check the core_pattern value by:

sysctl kernel.core_pattern

to see where your dumps are created (%e will be the process name, and %t will be the system time).

You can change it in /etc/sysctl.conf and then reload by sysctl -p.

You can test it by:

sleep 10 &
killall -SIGSEGV sleep

If core dumping is successful, you will see “(core dumped)” after the segmentation fault indication. Otherwise double-check your ulimits again.

See also:


Ubuntu

If you've Ubuntu, your dumps are created by Apport in /var/crash, however it's disabled by default.

For more details, check: Where do I find the core dump in Ubuntu?


macOS/OS X

In macOS, crash dumps are automatically created by Crash Reporter in form of backtraces.
You can find these crash files by executing Console and going to 'User Diagnostic Reports' section (under 'Diagnostic and Usage Information' group) or you can locate them in ~/Library/Logs/DiagnosticReports.

The actual core files are generated in /cores.

Read more: How to generate core dumps in Mac OS X?

顾忌 2024-11-16 22:48:29

检查ulimit -c的输出,如果输出0,这就是你没有核心转储的原因。

使用

ulimit -c unlimited

允许创建核心(可以将unlimited 替换为实际大小限制以更加安全)。

Check the ouput of ulimit -c, if it output 0, this is why you don't have core dumped.

Use

ulimit -c unlimited

to allow core creation (maybe replace unlimited by a real size limit to be more secure) .

我恋#小黄人 2024-11-16 22:48:29

使用 ulimit -cSIZE 设置最大核心转储大小。

Set a max core dump size with ulimit -cSIZE.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文