为什么我的核心文件没有被覆盖?

2024-03-08

在 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(使用前将#替换为@)

为什么我的核心文件没有被覆盖? 的相关文章

随机推荐