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