2014-04-19 33 views
2

我寫了一個相似性加入程序,我試圖調試它。但是,當我輸入gdb -q ./simjoiner時,輸出如下:這是GDB本身的段錯誤嗎?

從./simjoiner...讀取符號[1] 15939分段錯誤的gdb -q ./simjoiner

當使用gdb --args gdb ./simjoiner,我可以得到下面的回溯:

#34324 0x00000000004f28c5 in ??() 
#34325 0x000000000055efe9 in ??() 
#34326 0x000000000055ebd9 in ??() 
#34327 0x000000000055f0c4 in symbol_file_add() 
#34328 0x000000000055f125 in ??() 
#34329 0x000000000058472e in catch_command_errors_const() 
#34330 0x00000000005870ed in ??() 
#34331 0x00000000005845ca in catch_errors() 
#34332 0x0000000000587454 in gdb_main() 
#34333 0x000000000045375e in main() 

所以我覺得這個段錯誤是由GDB本身,而不是我的程序引起的。我正在使用archlinux倉庫中的gdb 7.7。

我試圖在gcc 4.8.2和clang 3.4上編譯我的程序,兩者的結果都是一樣的。我也刪除了~/.gdbinit,但沒有任何變化。但是,如果在啓用了-O2的情況下編譯,則沒有問題。如果我編譯我的程序的舊版本,它也可以很好地工作;但我還沒有想出哪些修改會導致此段錯誤。

你有什麼建議嗎?我做錯了什麼,或者這應該被視爲GDB錯誤?謝謝!

p.s.我的程序可在https://drive.google.com/file/d/0B9GlL8tebaU3eXdmVkN6WDR5Ykk/edit?usp=sharing;你可以輸入make clean; make gdb在你的機器上測試它。

+3

[Report bug](http://www.sourceware.org/gdb/bugs/)給GDB。 – timrau

+0

如果您的程序運行時間足夠長,請嘗試在開始運行後附加GDB,這將明確哪個進程崩潰。 –

+0

降級到gdb 7.6.1解決了這個問題;現在我確定它是一個錯誤。 – jiakai

回答

1

是的。這是一個gdb錯誤。你可以把這個報告給gdb開發者。