0

当我启动 gdb 时,我有这样的消息:

$ gdb a.out 
GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Thu Nov  3 21:59:02 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries .
warning: Could not find object file "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libstdc++-v3/src/../libsupc++/.libs/libsupc++convenience.a(array_type_info.o)" - no debug information available for "../../../../gcc-4.7.0/libstdc++-v3/libsupc++/array_type_info.cc".


warning: Could not find object file "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libstdc++-v3/src/../libsupc++/.libs/libsupc++convenience.a(bad_alloc.o)" - no debug information available for "../../../../gcc-4.7.0/libstdc++-v3/libsupc++/bad_alloc.cc".

看来我需要再次获取 libstdc++ 但如何使用 macports?

4

2 回答 2

1

这是由 Apple 作为 Xcode 的一部分安装的特殊 Unix 环境引起的几个问题之一。如果您需要比 Xcode 安装的版本更新的 gcc,请确保您还安装了更新版本的 gdb,否则您将遇到上述问题。您还需要确保您的环境实际上调用了两者的 macport 版本,而不是默认的 Xcode 版本。

仅从 macports 安装 gcc 不会使命令“gcc”调用 macports 安装的 gcc 版本。同样,'gdb' 不会调用 macports 安装的 gdb 版本。macports 安装的版本具有路径“/opt/local/bin/gcc-mp-4.6”和“/opt/local/ggdb”或类似的路径,具体取决于 gcc 的版本号。请注意,它是“ggdb”而不是“gdb”。

一种解决方案是始终通过提供整个路径来显式调用正确的版本。另一种方法是用指向 macports 版本的链接替换默认的 gcc 和 gdb 位置(这可能会导致 Xcode 出现问题)。默认位置是“/usr/local/bin/gcc”和“/usr/bin/gdb”。无论您的路径设置如何,默认的 bash shell 都会在这些位置查找。

于 2013-07-05T16:45:44.493 回答
0

http://gcc.gnu.org/gcc-4.5/changes.html

GCC 现在也为结语生成展开信息。由 GCC 生成的 DWARF 调试信息现在比以前使用了更多 DWARF3 的特性,以及一些 DWARF4 特性。早于 7.0 的 GDB 无法处理其中任何一个,因此要调试 GCC 4.5 生成的二进制文件或库,需要 GDB 7.0 或更高版本。您可以通过选项禁用 DWARF4 功能-gdwarf-3 -gstrict-dwarf,或使用-gdwarf-2 -gstrict-dwarf将 GCC 限制为仅 DWARF2,但无论何时发出展开信息,都会无条件地发出结尾展开信息。

所以你应该看看macports中是否有更新的GDB。

于 2012-07-28T22:33:11.453 回答