【问题标题】:No symbol tape information available - gdb 4.8 on Mac OSX Yosemite没有可用的符号磁带信息 - Mac OSX Yosemite 上的 gdb 4.8
【发布时间】:2015-03-10 17:49:22
【问题描述】:

我正在尝试使用 gdb 4.8 调试 Fortran 95 程序。当我遇到断点(或我试图调试的错误)时,我无法使用info 命令打印关于局部变量的任何信息。运行bt full 时,我也收到No symbol tape information available 错误。

我不相信这与 gdb 的版本有关,因为我第一次尝试从 Homebrew 安装该版本并得到相同的错误。然后我删除了 Homebrew 安装,并从源代码编译并安装了最新可用版本的 gdb。我的 Fortran 文件是使用-g 标志和-fbacktrace 标志编译的,并且没有明确的优化标志,但我尝试使用-O0-O1-O2-O0 进行编译。都给出相同的错误。

可能相关的事实是,在运行代码时,我会收到大量警告。以下是一小段摘录:

warning: `/private/tmp/gcc-dmSW1S/gcc-4.9.2/build/x86_64-apple-darwin14.0.0/libgfortran/.libs/pow_c8_i4.o': can't open to read symbols: No such file or directory.
warning: `/private/tmp/gcc-dmSW1S/gcc-4.9.2/build/x86_64-apple-darwin14.0.0/libgfortran/.libs/pow_c8_i8.o': can't open to read symbols: No such file or directory.
warning: `/private/tmp/gcc-dmSW1S/gcc-4.9.2/build/x86_64-apple-darwin14.0.0/libgfortran/.libs/pow_i16_i16.o': can't open to read symbols: No such file or directory.
warning: `/private/tmp/gcc-dmSW1S/gcc-4.9.2/build/x86_64-apple-darwin14.0.0/libgfortran/.libs/pow_i16_i4.o': can't open to read symbols: No such file or directory.
warning: `/private/tmp/gcc-dmSW1S/gcc-4.9.2/build/x86_64-apple-darwin14.0.0/libgfortran/.libs/pow_i16_i8.o': can't open to read symbols: No such file or directory.
warning: `/private/tmp/gcc-dmSW1S/gcc-4.9.2/build/x86_64-apple-darwin14.0.0/libgfortran/.libs/pow_i4_i16.o': can't open to read symbols: No such file or directory.
warning: `/private/tmp/gcc-dmSW1S/gcc-4.9.2/build/x86_64-apple-darwin14.0.0/libgfortran/.libs/pow_i4_i4.o': can't open to read symbols: No such file or directory.
warning: `/private/tmp/gcc-dmSW1S/gcc-4.9.2/build/x86_64-apple-darwin14.0.0/libgfortran/.libs/pow_i4_i8.o': can't open to read symbols: No such file or directory.
warning: `/private/tmp/gcc-dmSW1S/gcc-4.9.2/build/x86_64-apple-darwin14.0.0/libgfortran/.libs/pow_i8_i16.o': can't open to read symbols: No such file or directory.

我有 gcc 由 Homebrew 安装,但 which gcc 返回 /usr/bin 而不是 /usr/local/bin,所以这可能是默认的 Mac 安装。 /private/tmp/gcc-dmSW1S/ 不存在。可以提供所需的任何其他信息。

【问题讨论】:

  • 你真的在运行 gdb 4.8 吗?这个版本确实很古老。

标签: macos gcc gdb fortran fortran95


【解决方案1】:

您使用的是足够古老的gdb 版本,它无法从您使用 gcc 4.9 编译的对象中读取调试符号。 4.x 版本的 GDB 至少有 15 年的历史,并且可以追溯到编译器的 gcc 2.95 / egcs 时代。大量 ABI 和调试符号更改使 gdb 4.x 不适合调试使用 GCC 4.9 编译的对象。

对于使用 GCC 4.9 和默认调试符号输出 (DWARF4 iirc) 编译的对象,您需要 GDB 7.5.1 或更高版本。当前的 GDB 版本是 7.9。

【讨论】:

  • @laplacian13 这个答案假设您实际上使用的是 gdb 4.x,这很难相信。如果不是,请更新您的问题,我将修改或删除此答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
相关资源
最近更新 更多