Jos*_*vin 4 linux ubuntu gdb core filemtime
在Ubuntu 12.04上,打开一个新的文本文件并编写:
#include <stdlib.h>
int main()
{
abort();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在运行:
g++ yourfile.cpp
Run Code Online (Sandbox Code Playgroud)
然后运行可执行文件,该文件将进行核心转储:
./a.out
Run Code Online (Sandbox Code Playgroud)
现在检查文件的mtime:
-rw-r----- 1 xxxxx xxxxx 228K 2012-10-01 19:20:20.752136399 -0500 core
Run Code Online (Sandbox Code Playgroud)
现在再次运行可执行文件:
./a.out
Run Code Online (Sandbox Code Playgroud)
现在再次检查mtime:
-rw-r----- 1 xxxxx xxxxx 228K 2012-10-01 19:20:20.752136399 -0500 core
Run Code Online (Sandbox Code Playgroud)
一样的!为什么新的核心不会覆盖旧的核心?重建时,这会导致gdb抱怨内核比可执行文件旧。
为了确保这不是许可问题,我在/ tmp的新目录中尝试了此操作并在其中运行chmod -R 777 **/*。运行两次可执行文件仍然不会产生新的内核O_o。此外,ulimit -c报告有800000000,对于这样大小的内核来说绰绰有余。
我还尝试过使用干净的bash env - bash --noprofile --norc并仍然运行二进制文件不会更新内核的mtime,除非我先删除它。
如果您参考https://bugs.launchpad.net/ubuntu/+source/apport/+bug/160999,则这是Ubuntu中的一个错误,O_EXCL用于打开文件,防止覆盖现有内核。