Сообщение об ошибке GDB (GCC 4.7) (из macports)

У меня есть такое сообщение, когда я запускаю 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?

Ответы на вопрос(2)

вызванных специальной средой Unix, установленной Apple как часть Xcode. Если вам нужна более новая версия gcc, чем та, которая установлена Xcode, убедитесь, что вы также установили более новую версию gdb, иначе у вас возникнут проблемы, описанные выше. Вы также должны убедиться, что ваша среда на самом деле вызывает обе версии macport, а не версии Xcode по умолчанию.

Просто установка gcc из macports НЕ заставит команду 'gcc' вызвать версию gcc, установленную macports. Точно так же, 'gdb' не будет вызывать версию gdb, установленную macports. Версии, установленные macports, имеют пути '/opt/local/bin/gcc-mp-4.6' и '/ opt / local / ggdb' или что-то подобное, в зависимости от номера версии gcc. Обратите внимание, что это «ggdb», а не «gdb».

Одно из решений состоит в том, чтобы всегда явно вызывать правильную версию, указав полный путь. Другой способ - заменить стандартные местоположения gcc и gdb ссылками на версии macports (это может вызвать проблемы с Xcode, возможно). Расположение по умолчанию: «/ usr / local / bin / gcc» и «/ usr / bin / gdb». Оболочка bash по умолчанию будет выглядеть в этих местах независимо от ваших настроек пути.

http: //gcc.gnu.org/gcc-4.5/changes.htm говорит

GCC теперь генерирует информацию о раскрутке также для эпилогов. DWARF debuginfo, сгенерированный GCC, теперь использует больше возможностей DWARF3, чем раньше, а также некоторые функции DWARF4. GDB старше 7.0 не может обработать ни один из них, поэтому для отладки сгенерированных GCC 4.5 двоичных файлов или библиотек необходим GDB 7.0 или новее. Вы можете отключить использование функций DWARF4 с помощью-gdwarf-3 -gstrict-dwarf options или используйте-gdwarf-2 -gstrict-dwarf, чтобы ограничить GCC только DWARF2, но информация разматывания эпилога передается безоговорочно всякий раз, когда передается информация разматывания.

Так что посмотри, есть ли в macports более новый GDB.

ВАШ ОТВЕТ НА ВОПРОС