gdb 7.6如何解决BFD未知加载命令错误?

时间:2013-05-02 05:46:10

标签: gdb osx-mountain-lion

我尝试在emacs 24.3中编译7.5版本的gdb,但加载命令错误未知。

在此生产部署之前,相同的设置正在OSX 10.6.8 Snow Leopard平台上运行。

遵循指南(http://sourceware.org/gdb/wiki/BuildingOnDarwin)后,我发现有问题的可执行文件没有任何问题。

但是每当我调试一个简单的温度转换程序时,它总是会出现以下错误:

Current directory is /Users/xyz/Documents/C++....../CPP_Programs_mac/Chap01/Conversion/
BFD: /Users/xyz/Documents/C++......./CPP_Programs_mac/Chap01/Conversion/main.out: unknown load command 0x2
BFD: /Users/xyz/Documents/C++...../CPP_Programs_mac/Chap01/Conversion/main.out: unknown load command 0x29
BFD: /Users/xyz/Documents/C++...../CPP_Programs_mac/Chap01/Conversion/main.out: unknown load command 0x2b
GNU gdb (GDB) 7.5
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin12.3.0".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
BFD: /Users/xyz/Documents/C++...../CPP_Programs_mac/Chap01/Conversion/main.out: unknown load command 0x2a
BFD: /Users/xyz/Documents/C++..../CPP_Programs_mac/Chap01/Conversion/main.out: unknown load command 0x28
BFD: /Users/xyz/Documents/C++..../CPP_Programs_mac/Chap01/Conversion/main.out: unknown load command 0x29
BFD: /Users/xyz/Documents/C++..../CPP_Programs_mac/Chap01/Conversion/main.out: unknown load command 0x2b
Reading symbols from /Users/xyz/Documents/C++.../CPP_Programs_mac/Chap01/Conversion/main.out...(no debugging symbols found)...done.
(gdb)              

即使有这些错误,我仍然可以“运行”它(运行)它和另一个缓冲区来执行程序。 然后在gud屏幕上有很多错误:

BFD: /usr/lib/libstdc++.6.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/libstdc++.6.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/libSystem.B.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/libSystem.B.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/libc++abi.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/libc++abi.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libcache.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libcache.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libcommonCrypto.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libcommonCrypto.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libcompiler_rt.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libcompiler_rt.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libcopyfile.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libcopyfile.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libdispatch.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libdispatch.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libdnsinfo.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libdnsinfo.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libdyld.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libdyld.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libkeymgr.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libkeymgr.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/liblaunch.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/liblaunch.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libmacho.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libmacho.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libquarantine.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libquarantine.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libremovefile.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libremovefile.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libsystem_blocks.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libsystem_blocks.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libsystem_c.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libsystem_c.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libsystem_dnssd.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libsystem_dnssd.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libsystem_info.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libsystem_info.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libsystem_kernel.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libsystem_kernel.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libsystem_m.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libsystem_m.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libsystem_network.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libsystem_network.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libsystem_notify.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libsystem_notify.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libsystem_sandbox.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libsystem_sandbox.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libunc.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libunc.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libunwind.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libunwind.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libxpc.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libxpc.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/system/libcorecrypto.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/system/libcorecrypto.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/libobjc.A.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/libobjc.A.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/libauto.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/libauto.dylib(i386:x86-64): unknown load command 0x2b
BFD: /usr/lib/libc++.1.dylib(i386:x86-64): unknown load command 0x2a
BFD: /usr/lib/libc++.1.dylib(i386:x86-64): unknown load command 0x2b
(gdb)          

在终端中运行gdb具有相同的错误。我非常努力地去谷歌,并发现去年许多用户报告了这些错误。我想知道是否用新版本的gdb解决了这些问题。

有没有人在山狮上获得gdb 7.5的成功?或者甚至尝试过gdb 7.6?

谢谢

1 个答案:

答案 0 :(得分:3)

Mac OS X上的二进制文件有一系列加载命令,动态链接器(dyld)的说明,关于如何加载/运行程序。它们以一个字节开头,表示加载命令的类型。其中一些对于调试器理解正常运行至关重要,有些对于调试器并不重要。有一点表明它们被认为是“重要的”(LC_REQ_DYLD),但是gdb会警告每个加载命令它不能识别这种或那种方式。 0x2a是LC_SOURCE_VERSION而0x2b是LC_DYLIB_CODE_SIGN_DRS,这些加载命令是Mac OS X 10.8又名Mountain Lion的新功能。调试器的正确操作都不重要。

当你安装了一个正常工作的不同gdb时,有人可能会更新它知道的加载命令列表。

我强烈建议使用Apple支持的调试器lldb。它在Xcode 4.6中相当成熟,你在gdb中经常使用的大多数命令都可以按原样运行,或者只需稍加修改,参见http://lldb.llvm.org/lldb-gdb.html