如何在 Ubuntu 中生成核心转储文件
我想知道如何在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Linux
通过以下命令激活您的核心转储:
另外,通过以下方式检查
core_pattern
值:查看创建转储的位置(
%e
将是进程名称,>%t
将是系统时间)。您可以在 /etc/sysctl.conf 中更改它,然后通过 sysctl -p 重新加载。
您可以通过以下方式进行测试:
如果核心转储成功,您将在分段错误指示后看到“(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:
Also, check the
core_pattern
value by: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:
If core dumping is successful, you will see “(core dumped)” after the segmentation fault indication. Otherwise double-check your
ulimit
s 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?
检查
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) .使用
ulimit -c
SIZE 设置最大核心转储大小。Set a max core dump size with
ulimit -c
SIZE.