Почему GDB говорит “Архитектура файла не распознана”?
Вопрос
Я использую gdb в общей библиотеке aix, работающей на aix 5.3?Когда я пытаюсь запустить gdb для этого файла я получаю сообщение об ошибке ""Архитектура файла не распознана" Не знаю, как это исправить.
Кто-нибудь знает, почему я получаю это сообщение ""Архитектура файла не распознана"?.
gdb отлично работает с другими исполняемыми файлами, скомпилированными xlc.
Есть ли какая-то опция, которую я, возможно, использовал при компиляции, которая несовместима с GDB.какая-то опция, зависящая от процессора.
Я скомпилировал общую библиотеку w xlc версии 9.0 для aix.
Спасибо.
Решение
void set_gdbarch_from_file (bfd *abfd) { struct gdbarch_info info; struct gdbarch *gdbarch; gdbarch_info_init (&info); info.abfd = abfd; info.target_desc = target_current_description (); gdbarch = gdbarch_find_by_info (info); if (gdbarch == NULL) error (_("Architecture of file not recognized.")); deprecated_current_gdbarch_select_hack (gdbarch); }
Это фактический код GDB, о котором идет речь (gdb/arch-utils.c: 530-544).
Информация, переданная указателю gdbarch, кажется недопустимой.Это вызвано тем, что gdb_find_by_info возвращает нулевой указатель, а find_arch_by_info (gdb/gdbarch.c:3656) возвращает нулевой указатель.
Это в основном означает то, что там написано:GDB не удалось идентифицировать архитектуру файла.Это, по-видимому, Обычный проблема для xlc, даже в последних версиях gdb.
XLC и gdb, насколько я помню и понимаю, не очень хороши, когда дело доходит до условий совместимости (поддержка AIX минимальна), вы могли бы попробовать использовать Компилятор Gnu C .Вы могли бы взглянуть на исходные тексты GDB для ОЧЕНЬ конкретная информация (которую я на самом деле не могу вам предоставить).
Здесь это ссылка на специфику gcc-AIX.
Другие советы
Вы не запускаете GDB в общей библиотеке, вы запускаете его в исполняемый файл.
Если исполняемый файл загрузит вашу общую библиотеку, GDB узнает об этом.