GDB 错误消息 (GCC 4.7) (来自 macports)

Posted

技术标签:

【中文标题】GDB 错误消息 (GCC 4.7) (来自 macports)【英文标题】:GDB error message (GCC 4.7) (from macports) 【发布时间】:2012-05-14 23:55:13 【问题描述】:

我在启动 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?

【问题讨论】:

您需要在最新版本的 GCC 中使用 GDB 7,请参阅***.com/a/10657175/981959 【参考方案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 都会在这些位置查找。

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于GDB 错误消息 (GCC 4.7) (来自 macports)的主要内容,如果未能解决你的问题,请参考以下文章

cc1plus:错误:无法识别的命令行选项'-std = c ++ 11'Ubuntu gcc 4.7

strcpy在centos6.x,gcc4.4.7版本上会有bug,自我移动导致覆盖错误overlap

Centos6.5升级gcc4.4.7升级gcc4.7.0

flens lapack:需要 GNU GCC 4.7 或更高版本!我的mac有

在centOS7.2上编译gcc4.4.7

来自 GDB 的消息“在启动程序期间以信号 SIGKILL 终止”