Отладка путаницы формата файла: ELF / BIN - PullRequest
2 голосов
/ 26 апреля 2011

В настоящее время я работаю с некоторыми системами микроконтроллеров, и я хотел бы углубиться в детали, чтобы понять, что происходит ниже.В настоящее время я работаю с Motorola Coldfire и ARM 9. Для обоих я использую набор инструментов GCC в качестве кросс-компилятора!

ELF-файлы содержат больше информации, чем необходимо для запуска приложения!Файл BIN будет достаточно, хотя!Я знаю, что формат ELF содержит дополнительную информацию.он объединяет символы и их адреса в памяти, верно?Только дополнительная информация для программного отладчика (например, GDB) или некоторые из этих данных также передаются на целевое устройство?Так что, если есть попадание в точку останова, встроенный отладчик сообщает хосту соответствующий адрес, а программный отладчик может показать мне соответствующий раздел кода вместо только скучного адреса памяти?Могу ли я отлаживать, используя только BIN-файл (Хорошо, это было бы глупо, но в основном?)?

Приветствуется некоторое просвещение по этой теме!

1 Ответ

2 голосов
/ 03 августа 2011

Вы правы, что файлы ELF содержат дополнительную информацию, например символы, используемые для отладки. Обычно в среде µC вы будете использовать файл BIN для выполнения на процессоре (обычно загружаемый во флэш-память), а затем вы будете передавать файл ELF в GDB для отладки. При запуске кросс-скомпилированной GDB на вашем ПК для разработки он будет использовать файл ELF для справки (поэтому ему известны номера строк кода, имена переменных и т. Д.), Но он будет связываться с отладчиком на кристалле для считывания областей памяти, установите точки останова и т. д. Чтобы заставить GDB взаимодействовать с отладчиком на кристалле, вы используете команду GDB target remote, передавая ей любой необходимый параметр (часто последовательный порт сетевого адреса и порта).

...