Есть ли более простой способ вывести структуру C, захваченную в bin-файле, используя GDB

Я пытаюсь сбросить содержимое двоичного файла, который получается как необработанное содержимое bin структуры C в моем встроенном программном обеспечении. В настоящее время я могу добиться этого, выполнив следующее в GDB

  1. Путь к файлу / to / myelf.elf
  2. запустить путь / к / myelf.elf
  3. Ctrl-C, чтобы отправить SIGINT
  4. восстановить путь / к / mybin.bin 0xADDRESS
  5. p * (* my_c_strct) 0xADDRESS

Несмотря на то, что все это работает без подключения к моей плате с использованием JTAG, мой вопрос заключается в том, почему я должен «запускать» файл elf и «восстанавливать» содержимое файла bin в память, а затем только «печатать» my_c_struct?

В идеальном мире я хотел бы иметь инструмент, к которому, если я предоставлю следующее, он выгрузит мое структурное содержимое. Может быть, есть еще один инструмент, который я могу использовать в цепочке инструментов GNU для этого, о котором я не знаю!

  1. Предоставить файл символов
  2. Предоставить мой дамп бен
  3. И затем выведите my_c_struct

Спасибо вам всем.

-3

Решение

Ты не объяснил как Вы «восстанавливаете» содержимое. Я предполагаю, что вы используете GDB восстановить команда.

почему я должен «запустить» файл эльфа

restore команда выполняет fopen/fread, а затем записывает целевую память, и для тот он нуждается в низшем процессе (который создается run команда).

и «восстановить» содержимое файла bin в память

Очевидно, ГБД необходимо как-то иметь доступ к данным для отображения. Один из способов (так, как вы это делаете) — хранить данные в памяти.

Другой способ — сообщить GDB, как выглядит память во время выполнения, что достигается с помощью core команда.

К сожалению, эта команда нуждается в действительном правильно отформатированном основном файле, чтобы указать, где в памяти были биты во время выполнения. Вы мог упаковать ваши данные в основной файл с помощью Perl скрипт, но это скорее проблема, чем стоит.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]