2013-05-02 1 views
0

Я попытался скомпилировать 7.5 версию gdb в emacs 24.3, но с неизвестной ошибкой команды загрузки.Насколько хорошо gdb 7.6 решает ошибку BFD unknown load command?

Перед этим производственным развертыванием такая же установка работает на платформе 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)    

Даже с этими ошибками я все еще могу «Go» (запустить) это и другой буфер для выполнения программы. Тогда есть много ошибок в гуд экране:

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 в терминале имеют одни и те же ошибки. Я очень старался google и обнаружил, что эти ошибки сообщают многие пользователи в прошлом году. Интересно, разрешены ли они с новой версией gdb.

Неужели кто-то удался в gdb 7.5 на Mountain Lion? Или даже попробовал gdb 7.6?

Благодаря

+0

Похоже на http://stackoverflow.com/questions/12050257/gdb-fails -on-mountain-lion – devnull

+0

есть. но эта публикация удаляется модератором. Не уверен причина. Во всяком случае, я просто устанавливаю gdb 7.6 для Mountain Lion 10.8.3, и ошибки BFD исчезли. Поэтому просто поделитесь со всеми другими пользователями здесь, которые могут задаться вопросом, является ли это хорошим обновлением. ура – sshi

ответ

3

бинарников на Mac OS X есть ряд команд нагрузки, инструкции для динамического компоновщика (dyld), о том, как загрузить/запустить программу. Они начинаются с байта, который указывает тип команды загрузки. Некоторые из них имеют решающее значение для того, чтобы отладчик понимал, как правильно работать, некоторые из них не важны для отладчика. Есть немного, что указывает на то, что они считаются «важными» (LC_REQ_DYLD), но gdb будет предупреждать каждую команду загрузки, которую он не распознает так или иначе. 0x2a - LC_SOURCE_VERSION, а 0x2b - LC_DYLIB_CODE_SIGN_DRS, эти команды загрузки являются новыми для Mac OS X 10.8 aka Mountain Lion. Также не важно для правильной работы отладчика.

Когда вы установили другой gdb, который работал правильно, кто-то, вероятно, обновил список команд загрузки, о которых он знал.

Я настоятельно рекомендую использовать поддерживаемый Apple debugger lldb. Он довольно зрелый в Xcode 4.6, и большинство команд, которые вы часто используете в gdb, будут работать как есть или с небольшими изменениями, см. http://lldb.llvm.org/lldb-gdb.html

Смежные вопросы