2012-11-03 23 views
0

我有一個程序,我希望在gdb中調試出現分段錯誤,但我不知道如何從中生成核心文件。如何在Mac上生成核心文件?

我試過$ ulimit -c unlimited,但是當運行程序然後導航到/ cores /時,在我輸入ls時沒有生成核心文件。

我在這裏錯過了什麼嗎?

在此先感謝!

回答

0

您啓用核心文件生成的方式取決於您的shell。你顯示的語法是用shbash作爲shell的人,它應該可以正常工作。例如

% 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) 
相關問題