我用 clang 安装了 XCode 5.1
我通过自制软件安装了 gcc 4.8 通过自制软件
安装了 gdb 7.7.1
使用 OSX 10.9.3
我在 eclipse kepler 中使用 g++-4.8 使用 Makefile 编译我的 c++ 源代码并尝试调试它,但是当到达断点时,我看不到任何变量,就像在这个问题中一样: GDB 说“没有符号表”,但是 nm 显示文件有调试符号
我在该问题的建议部分遵循了@Tom Tromey 的建议以使用
set complaints 10000
在 gdb 中,然后加载文件。这揭示了加载过程中的许多错误。首先我看到了很多这些:
unhandled stab for dwarf OSO file...unhandled stab for dwarf OSO file...
然后很多:
During symbol reading, location expression too complex.
During symbol reading, Member function "~clone_impl" (offset 414143) is virtual but the vtable offset is not specified.
然后还有更多:
During symbol reading, unexpected overlap between:
(A) section `__TEXT.__textcoal_nt' from `<snip>/sourcefilename.o' [0x228, 0x28c)
(B) section `__TEXT.__textcoal_nt' from `<snip>/differentsourcefilename.o' [0x268, 0x2cc).
Will ignore section B.
有很多错误,其中一个部分被忽略而有利于另一部分。
我曾经认为 gdb 是罪魁祸首,但今天我发现如果我改用 llvm-g++,那么 gdb 会按预期工作。我很高兴发现我实际上可以在不使用 cout 语句的情况下进行调试。
另一个类似的问题:如何让自制版本的 GDB 在 Mac OS X 上运行?
我想用 g++-4.8 解决问题并需要帮助。我发现的大多数答案都与 gdb 的过时版本有关,但 7.7.1 是相当新的,应该根据其他人对 SO 的建议来工作。