我想知道如何在Ubuntu中生成核心转储文件。我使用Ubuntu 8.04.1和gcc编译器4.2.3。我写了一个简单的C程序来生成核心转储。我已经编译了程序 - gcc -g badpointer.c。当我运行程序时,它给出了分段错误,但是没有产生核心转储。我还需要做些什么来生成核心转储文件?如何在Ubuntu中生成核心转储文件
18
A
回答
31
检查输出ulimit -c
,如果输出0,这就是为什么你没有核心转储。
使用
ulimit -c unlimited
允许核心创作(也许一个真正的大小限制取代unlimited
更安全)。
0
设置最大核心转储大小为ulimit -c
大小。
32
通过激活你的核心转储:
ulimit -c unlimited
同时检查:
$ sysctl kernel.core_pattern
,看看你的转储创建(%E会的进程名,并%T将系统时间)。
您可以在/etc/sysctl.conf中将其更改,然后通过sysctl -p
重新加载。
您可以通过测试:
sleep 10 &
killall -SIGSEGV sleep
如果核心倾销成功,你会看到后分段故障指示“(核心转储)”。
参见:
How to generate a stacktrace when my gcc C++ app crashes
Ubuntu的
如果你已经Ubuntu的,由apport
在/var/crash
创建了转储,但在不同的格式(编辑文件看见)。
请阅读更多:
https://wiki.ubuntu.com/Apport
OS X
在OS X,你的崩溃转储自动Crash Reporter在回溯的形式创建的。 通过执行Console并转到“用户诊断报告”部分(位于“诊断和使用信息”组下)或您可以在~/Library/Logs/DiagnosticReports
中找到这些崩溃文件。
实际的核心文件在/cores
中生成。
相关问题
- 1. 如何在Linux中生成核心转储文件?
- 2. 未生成核心转储
- 3. 如何在使用GDB生成核心转储文件时限制核心转储文件的大小
- 4. 在android中生成核心转储
- 5. 如何让nscd生成核心转储文件?
- 6. 谁生成核心转储文件?内核还是glibc?
- 7. 核心转储文件不产生
- 8. Erlang:如何禁用“崩溃转储”和“核心转储”生成?
- 9. 如何在centos中为守护进程生成核心转储?
- 10. Eclipse霓虹灯:生成核心转储
- 11. 手动生成精灵核心转储
- 12. GDB +核心文件转储
- 13. 为什么生成核心转储文件?
- 14. 生成子进程的核心转储文件
- 15. 核心转储文件没有生成分段错误
- 16. GDB +另一个编译器生成的核心转储文件
- 17. Ubuntu上的段错误(核心转储)
- 18. Ubuntu Semaphore:细分故障(核心转储)
- 19. 在Linux中为小应用程序生成java核心转储日志文件
- 20. 如何生成核心转储于CentOS(PHP-FPM)
- 21. 如何生成核心转储上AddressSanitizer错误
- 22. 如何使用Address Sanitizer和gcc7.1.0生成核心转储
- 23. 找出核心转储何时完成
- 24. 核心转储?
- 25. 如何合成xilinx核心生成器中生成的verilog核心?
- 26. 段故障(核心转储在c)中在Ubuntu
- 27. 核心转储文件格式
- 28. Apache的核心转储文件
- 29. php核心转储文件位置
- 30. 核心转储文件名截断
用'睡眠10 killall -SIGSEGV sleep' HOWTO选项添加到repoen或保持封闭的应用程序? – 2017-05-27 16:20:33
@ e-info128一旦进程死于SIGSEGV信号(基本崩溃),您无法重新打开它。你需要重新开始一个新的进程,除非它是一个服务,所以它可以自动重新生成。 – kenorb 2017-05-29 15:32:04