我编写了一个相似连接程序,正在尝试调试它。但是,当我输入 gdb -q ./simjoiner
时,输出如下:
Reading symbols from ./simjoiner...[1] 15939 segmentation fault 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 错误吗?谢谢!
附:我的程序可在 https://drive.google.com/file/d/0B9GlL8tebaU3eXdmVkN6WDR5Ykk/edit?usp=sharing 获取;你可以输入 make clean; make gdb
在您的机器上测试它。
最佳答案
事实上这个错误很久以前就被报告过。请参阅https://sourceware.org/bugzilla/show_bug.cgi?id=16752 。但我惊讶地发现即使在当前的 git 版本上它也没有得到修复。
关于c++ - 这是GDB本身的段错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23167224/