6

プログラムで常にセグメンテーション違反が発生していますが、コアダンプファイルが生成されません。ulimitは無制限の値を示していますが、念のためulimit -cは無制限でしたが、問題ないようです。何か案は?

4

4 に答える 4

5

プログラムが root として (または root 機能を使用して) 実行されている場合は、以下を確認してください。

cat /proc/sys/fs/suid_dumpable

または、プログラムがデーモン チェックの場合:

getsebool allow_daemons_dump_core

于 2013-03-07T14:47:11.577 に答える
3

いくつかの理由が考えられます

  • ディレクトリへの書き込みアクセス権がない
  • プログラムは作業ディレクトリを変更し
    、他の場所でもコアを探します
  • ディスクがいっぱいです
  • ulimit が 1 つのシェルで設定され、プログラムが別のシェルまたは環境で開始される
于 2013-03-07T13:54:04.470 に答える
1

root になってテストすることに反対しない限り、シェル セッションの問題を回避するには:

#ifdef DEBUG
    // Enable core dumps
    struct rlimit corelim;

    corelim.rlim_cur = -1;
    corelim.rlim_max = -1;

    if (setrlimit (RLIMIT_CORE, &corelim) != 0)
    {
        log_error ("Couldn't set core limit");
    }
#endif
于 2013-03-07T14:05:54.640 に答える
-6

特にメモリ内の間違ったアドレスにアクセスすると、セグメンテーション違反が発生します。リソースが不適切に初期化される可能性が非常に高くなります。たとえば、Valgrind をデバッグに使用できます。

于 2013-03-07T14:32:21.657 に答える