セグメンテーション違反のためにgdbでデバッグしたいプログラムがありますが、そこからコアファイルを生成する方法がわかりません。
試し$ ulimit -c unlimited
ましたが、プログラムを実行して/ cores /に移動すると、入力したときにコアファイルが生成されませんls
。
ここに何か足りないものがありますか?
前もって感謝します!
コアファイルの生成を有効にする方法は、シェルによって異なります。表示している構文は、シェルとして使用している人のためのものsh
でbash
あり、正常に機能するはずです。例えば
% sh
sh-3.2$ cat>/tmp/a.c
int main ()
{
void (*f)() = 0;
f();
}
sh-3.2$ clang -g /tmp/a.c -o /tmp/a.out
sh-3.2$ ulimit -c unlimited
sh-3.2$ /tmp/a.out
Segmentation fault: 11 (core dumped)
sh-3.2$ ls -l /cores/core.10893
-r-------- 1 jason admin 367714304 Nov 16 13:13 /cores/core.10893
sh-3.2$ gdb -q /tmp/a.out /cores/core.10893
Reading symbols for shared libraries .. done
Reading symbols for shared libraries . done
Reading symbols for shared libraries
warning: Could not find object file "/var/folders/5h/nlzqfv116jnc68g495d_3j4m0000gn/T/a-pUbMeU.o" - no debug information available for "/tmp/a.c".
.......................... done
#0 0x0000000000000000 in ?? ()
(gdb) add-dsym /tmp/a.out.dSYM
Added dsym "/tmp/a.out.dSYM" to "[memory object "/private/tmp/a.out" at 0x10f5d7000]".
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x000000010f5d7f3d in main () at /tmp/a.c:4
(gdb)