c++ - 这是GDB本身的段错误吗?

标签 c++ linux gdb

我编写了一个相似连接程序,正在尝试调试它。但是,当我输入 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/

相关文章:

c++ - 列表和列表元素,存储在哪里?

c++ - 获取 Boost Proto 子表达式的标签类型

linux -/usr/bin/ld : . ./freeglut/libfreeglut_static.a(freeglut_state.o): 未定义对 Box2d 中符号 'XGetWindowAttributes' 的引用

linux - 64位系统格式化字符串漏洞利用

c - 使用 gdb 调试 Linux 内核模块

c++ - 为什么我在 gdb 中收到 ifstream 对象的 <incomplete type> 消息?

c++ - 没有合适的默认构造函数可用。 (创建子类时)

c++ - 如何以可移植的方式自动检测 C++ 中的内存泄漏?

c - 如何在 C 中创建 Linux 管道示例

c++ - 内存在单行函数调用中损坏?