2014-12-07 52 views
0

我的程序返回段錯誤,當我試圖用GDB它並沒有多大幫助GDB只顯示發生錯誤(分段錯誤)

gdb ./a.out 
Program received signal SIGSEGV, Segmentation fault. 
0x0000000000406d74 in class::function()() 
bt 
#0 0x0000000000406d74 in class::function()() 
#1 0x0000000000407893 in main() 

沒有多少人,我能想到的功能。有沒有什麼我可以用gdb來獲得更多細節,實際上會有所幫助?

+0

您是否使用調試信息進行編譯(gcc和clang使用'-g')? – 2014-12-07 14:20:06

+0

這實際上做了訣竅,在「g ++」後面加上-g3,然後運行gdb顯示段錯誤發生的位置。 – 2014-12-07 14:25:52

回答

1

您似乎忘記在二進制文件中包含調試信息。如果您這樣做(如果您使用g++clang++編譯-g,否則請閱讀您的編譯器手冊),bt的輸出將顯示重要的行號,並且gdb將能夠爲您提供更多信息。