我有一个正在处理的应用程序,但在出现段错误时无法获取核心转储。事实上,我根本无法获得真正的核心转储文件。一个简单的测试用例将生成一个核心转储文件,但它的长度为零。
我已经准备好了ulimit -c unlimited
。这是 64 位 Ubuntu Maverick。 任何提示下一步该怎么做?
[dlee@dlee-oak t]$ ulimit -c
unlimited
[dlee@dlee-oak t]$ cat mkcore.cpp
int main() { *((int *)0) = 0; }
[dlee@dlee-oak t]$ g++ -g mkcore.cpp -o mkcore
[dlee@dlee-oak t]$ ./mkcore
Segmentation fault
[dlee@dlee-oak t]$ ls -l core*
-rw-r--r-- 1 dlee dlee 0 2010-12-21 15:00 core.2993
Run Code Online (Sandbox Code Playgroud)
编辑:更多信息
[dlee@dlee-oak t]$ tail -n +1 /proc/sys/kernel/core_*
==> /proc/sys/kernel/core_pattern <==
core
==> /proc/sys/kernel/core_pipe_limit <==
0
==> /proc/sys/kernel/core_uses_pid <==
1
[dlee@dlee-oak t]$ tail /var/log/kern.log
<snip/>
Dec 21 …
Run Code Online (Sandbox Code Playgroud)