私のプログラムはC++で書かれています。 -g3 -O0 -ggdbフラグを使用して、gccでコンパイルします。クラッシュした場合、コアダンプを開きます。コアダンプファイルを作成しますか?それとも、プログラム自体で、またはそれが実行されるコンピューターで、コアダンプ作成を有効にするために何かをする必要がありますか?このファイルが作成される場所とその名前は何ですか?
ulimit -c
を設定する必要があります。このパラメーターに0がある場合、コアダンプファイルは作成されません。こうします:ulimit -c unlimited
そしてすべてが正しいかどうかを確認しますulimit -a
。コアダンプファイルは、アプリケーションがたとえば不適切なことを行ったときに作成されます。システム上のファイルの名前はcore.<process-pid-here>
です。
プログラム内でこのようにできます:
#include <sys/resource.h>
// core dumps may be disallowed by parent of this process; change that
struct rlimit core_limits;
core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &core_limits);
デフォルトでは、平均的なユーザーはプロファイルをどうするかわからないため、多くのプロファイルはデフォルトでコアファイルサイズ0に設定されています。
ulimit -c unlimited
プログラムを実行する前に。