暫時只簡單寫一下步驟:
1,gcc -g test.c -o test -- 編譯時需要加入 -g參數
2,ulimit -c unlimited 設置core文件無限大小;我的開發環境不設置這個,則無core文件生成
3,運行./test 生成core文件(會在程序運行的目錄下生成) --有些linux系統是生成 core.xxx (xxx就是你執行的程序的pid)
4,調試 gdb ./test core
5,使用 bt 指令查看具體段錯誤位置
(gdb) bt
#0 malloc_consolidate (av=av@entry=0xb7639420 <main_arena>) at malloc.c:4159
#1 0xb7500a09 in _int_malloc (av=av@entry=0xb7639420 <main_arena>, bytes=bytes@entry=65548)
at malloc.c:3425
#2 0xb75029d8 in __GI___libc_malloc (bytes=65548) at malloc.c:2893
#3 0x0804c39d in ?? ()
#4 0x08052cb3 in ?? ()
#5 0x08052998 in ?? ()
#6 0x0805dc75 in ?? ()
#7 0x0805d54c in ?? ()
#8 0x0805d402 in ?? ()
#9 0x08059ac6 in ?? ()
#10 0x080578b5 in ?? ()
#11 0x08057d81 in ?? ()
#12 0x0805860c in ?? ()
#13 0x0804a689 in ?? ()
#14 0xb74a5af3 in __libc_start_main (main=0x804a5dd, argc=1, argv=0xbfa92a34, init=0x8062b50,
fini=0x8062bc0, rtld_fini=0xb77d9300 <_dl_fini>, stack_end=0xbfa92a2c) at libc-start.c:287
#15 0x0804a501 in ?? ()
6,frame 4 (對應的數字) 查看對應具體某個位置相關信息