4

Ubuntu 12.04 では、新しいテキスト ファイルを開き、次のように記述します。

#include <stdlib.h>

int main()
{
    abort();
    return 0;
}

今実行します:

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 **/*内部で実行しました。実行可能ファイルを 2 回実行しても、新しいコアは生成されませんでした O_o また、ulimit -c800000000 と報告され、このサイズのコアには十分すぎる値です。

また、クリーンなbashを実行しようとしましたenv - bash --noprofile --norcが、バイナリを実行しても、最初に削除しない限り、コアのmtimeは更新されません。

4

2 に答える 2

6

https://bugs.launchpad.net/ubuntu/+source/apport/+bug/160999を参照すると、これはO_EXCLファイルを開くために使用する Ubuntu のバグであり、既存のコアを上書きできません。

于 2012-10-02T02:54:12.210 に答える
2

core(5)のman ページには、coreファイルが [再] 書き込みされない特定の条件がリストされています。あなたはおそらくこれらの条件のいずれかを満たしています。そのマニュアルページを注意深く読んでください。

于 2012-10-01T05:02:48.560 に答える