gcc除錯segmentation fault的方法
阿新 • • 發佈:2019-02-06
前一陣編了大概3500+lines的程式碼,一直執行穩定,結果今天出現了segmentation fault的錯誤,這可怎麼辦? 用gdb 一行一行調嗎?
確實讓人頭疼,後來發現gdb功能強大,現分享解決方法:
除錯方法如下:
1. gcc 編譯的時候 -g
2. 執行gdb filename
#0 0x0000000000400e67 in __arc_list_splice (prev=0x7ffff7ec7000, next=0xaa07a8) at arc.h:43
#1 0x0000000000400e93 in __arc_list_remove (head=0xaa07f8) at arc.h:50
#2 0x0000000000401297 in __arc_move (cache=0x608010, obj=0xaa07e0, state=0x0) at arc.c:104
#3 0x000000000040186c in __arc_destroy (cache=0x608010) at arc.c:231
#4 0x0000000000404497 in lfs_fini () at lfs_main.c:132
#5 0x000000000040455b in main (argc=2, argv=0x7fffffffe6d8) at lfs_main.c:157
閱讀(30) | 評論(0) | 轉發(0) | 給主人留下些什麼吧!~~ 評論熱議
確實讓人頭疼,後來發現gdb功能強大,現分享解決方法:
除錯方法如下:
1. gcc 編譯的時候 -g
2. 執行gdb filename
點選(此處)摺疊或開啟
- gdb> run arguments (cc1 will stop at the segmentation fault)
- gdb> where
- gdb> list
就可以顯示如下程式碼了:(gdb) where
#0 0x0000000000400e67 in __arc_list_splice (prev=0x7ffff7ec7000, next=0xaa07a8) at arc.h:43
#1 0x0000000000400e93 in __arc_list_remove (head=0xaa07f8) at arc.h:50
#2 0x0000000000401297 in __arc_move (cache=0x608010, obj=0xaa07e0, state=0x0) at arc.c:104
#3 0x000000000040186c in __arc_destroy (cache=0x608010) at arc.c:231
#4 0x0000000000404497 in lfs_fini () at lfs_main.c:132
#5 0x000000000040455b in main (argc=2, argv=0x7fffffffe6d8) at lfs_main.c:157
閱讀(30) | 評論(0) | 轉發(0) | 給主人留下些什麼吧!~~ 評論熱議