我想知道如何在Ubuntu中生成核心转储文件.我使用的是Ubuntu 8.04.1和gcc编译器4.2.3.我编写了一个简单的C程序来生成核心转储.我已经将程序编译为 - gcc -g badpointer.c.当我运行程序时,它会给出分段错误,但不会生成核心转储.我还需要做些什么才能生成核心转储文件?
ken*_*orb 51
通过以下方式激活您的coredumps:
ulimit -c unlimited
Run Code Online (Sandbox Code Playgroud)
另外,检查:
sysctl kernel.core_pattern
Run Code Online (Sandbox Code Playgroud)
查看转储的创建位置(core_pattern将是进程名称,%e将是系统时间).
您可以在/etc/sysctl.conf中更改它,然后重新加载%t.
您可以通过以下方式测试:
sleep 10 &
killall -SIGSEGV sleep
Run Code Online (Sandbox Code Playgroud)
如果核心转储成功,您将在分段故障指示后看到"(core dumped)".
也可以看看:
Ubuntu的
如果你已经Ubuntu的,你的转储通过创建Apport会在sysctl -p,但它在默认情况下禁用.
有关更多详细信息,请检查:我在哪里可以找到Ubuntu中的核心转储?
在macOS中,崩溃转储由Crash Reporter以回溯的形式自动创建.您可以通过执行控制台并转到"用户诊断报告"部分(在"诊断和使用信息"组下)找到这些崩溃文件,也可以在其中找到它们ulimit.
实际的核心文件是在中生成的/var/crash.
阅读更多:如何在Mac OS X中生成核心转储?
Céd*_*ien 35
检查输出ulimit -c,如果输出0,这就是你没有核心转储的原因.
使用
ulimit -c unlimited
允许核心创建(可能用unlimited实际大小限制替换为更安全).
| 归档时间: |
|
| 查看次数: |
69351 次 |
| 最近记录: |