Отладка Eclipse CDT, присоединяющаяся к процессу - не в исполняемом формате: формат файла не распознан - PullRequest
6 голосов
/ 26 августа 2011

Я пытаюсь использовать Eclipse с CDT для отладки 64-битного двоичного файла.Двоичный файл построен за пределами Eclipse и работает нормально.Я запускаю двоичный файл вне eclipse, а затем пытаюсь присоединиться к процессу, используя тип конфигурации отладки «C / C ++ Attach to Application».

Я могу выбрать процесс из списка, который появляется, когда вызапустить конфигурацию отладки, однако я получаю следующее сообщение об ошибке:

Error in final launch sequence
Failed to execute MI command:
attach 22014
Error message from debugger back end:
"program.x64": not in executable format: File format not recognized

Все работает нормально, если я собираюсь для цели i386.

Я не совсем уверен, куда идти свот, я читал, что это может быть связано с двоичными парсерами в Eclipse:

Эта ссылка упоминает парсеры, а эта ссылка описывает ошибку сисправленный анализатор PE.

Я использую Eclipse Indigo с Eclipse CDT 8.0.0 в Linux x64.Я безуспешно пробовал 'Elf Parser' и 'GNU Elf Parser' в project_properties / c ++ _ build / settings.

Информация о файле:

hostmachinea:file program.x64 
programs.x64: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

Файлы GDB и gdbinit являютсяEclipse по умолчанию

Ответы [ 2 ]

3 голосов
/ 26 августа 2011

Звучит так, как будто GDB, который использует Eclipse, был создан для i386 и, следовательно, не может отлаживать 64-битные двоичные файлы. Скорее всего, вам нужно установить 64-битную GDB.

Вот как выглядит сообщение об ошибке из текущей GDB:

$ ./gdb --version
GNU gdb (GDB) 7.3.50.20110809-cvs
Copyright (C) 2011 Free Software Foundation, Inc.
...
This GDB was configured as "i686-linux".
...

$ ./gdb -q /bin/date
"/bin/date": not in executable format: File format not recognized

Файлы GDB и gdbinit являются значениями по умолчанию для Eclipse

Вы установили 32-битную или 64-битную версию CDT?

1 голос
/ 30 августа 2011

В оболочке, GDB, я считаю, 64-битный:

~:gdb --version
GNU gdb (GDB) 7.0.1
Copyright (C) 2009 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-unknown-linux-gnu".

Дата загрузки:

~:gdb -q /bin/date 
Reading symbols from /bin/date...(no debugging symbols found)...done.

Набрав which gdb , и после явного указания этого пути в конфигурации отладки в Eclipse я больше не получаю сообщение об ошибке.

В качестве небольшого примечания, как вы можете узнать, какой GDB Eclipse использует по умолчанию?

Я скачал 64-битную версию Eclipse Indigo, которая поставлялась в комплекте с CDT.

...