在 Ubuntu 12.04 上,打开一个新的文本文件并写入:
#include <stdlib.h>
int main()
{
abort();
return 0;
}
Now run:
g++ yourfile.cpp
然后运行可执行文件,它将进行核心转储:
./a.out
现在检查文件的 mtime:
-rw-r----- 1 xxxxx xxxxx 228K 2012-10-01 19:20:20.752136399 -0500 core
现在再次运行可执行文件:
./a.out
现在再次检查 mtime:
-rw-r----- 1 xxxxx xxxxx 228K 2012-10-01 19:20:20.752136399 -0500 core
一样的!为什么新的核心不覆盖旧的核心?重建时,这会导致 gdb 抱怨核心比可执行文件旧。
为了确保这不是权限问题,我在 /tmp 中的新目录中尝试了此操作并运行chmod -R 777 **/*
里面。运行可执行文件两次仍然没有产生新的核心 O_o 另外,ulimit -c
报告称 800000000,对于这种大小的核心来说绰绰有余。
我还尝试运行干净的bashenv - bash --noprofile --norc
并且仍然运行二进制文件不会更新核心的 mtime,除非我先删除它。
如果您参考https://bugs.launchpad.net/ubuntu/+source/apport/+bug/160999 https://bugs.launchpad.net/ubuntu/+source/apport/+bug/160999这是 Ubuntu 中的一个错误O_EXCL
打开文件,防止它覆盖现有的核心。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)