2013-05-02 57 views
0

我試圖在emacs 24.3中編譯7.5版本的gdb,但加載命令錯誤未知。gdb 7.6如何解決BFD未知加載命令錯誤?

在此生產部署之前,相同的設置正在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呢?

感謝

+0

似乎類似於http://stackoverflow.com/questions/12050257/gdb-fails -on-mountain-lion – devnull 2013-05-02 07:51:07

+0

是的。但該帖子已被主持人刪除。不確定原因。無論如何,我只是爲Mountain Lion 10.8.3安裝gdb 7.6,BFD錯誤消失了。因此,請與這裏的所有其他用戶分享誰可能懷疑它是否是一個好的升級。乾杯 – sshi 2013-05-02 18:18:37

回答

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

相關問題