这是GDB本身的错误吗?

时间:2014-04-19 07:23:02

标签: c++ linux gdb

我写了一个相似性加入程序,我正在尝试调试它。但是,当我输入gdb -q ./simjoiner时,输出为:

  

从./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 repo中的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在您的计算机上进行测试。

2 个答案:

答案 0 :(得分:2)

事实上很久以前就已经报道了这个bug。见https://sourceware.org/bugzilla/show_bug.cgi?id=16752。但我很惊讶地发现,即使在当前的git版本中也没有修复它。

答案 1 :(得分:1)

是。这是一个gdb错误。您可以向gdb开发人员报告此事。