Я пытаюсь сбросить содержимое двоичного файла, который получается как необработанное содержимое bin структуры C в моем встроенном программном обеспечении. В настоящее время я могу добиться этого, выполнив следующее в GDB
Несмотря на то, что все это работает без подключения к моей плате с использованием JTAG, мой вопрос заключается в том, почему я должен «запускать» файл elf и «восстанавливать» содержимое файла bin в память, а затем только «печатать» my_c_struct?
В идеальном мире я хотел бы иметь инструмент, к которому, если я предоставлю следующее, он выгрузит мое структурное содержимое. Может быть, есть еще один инструмент, который я могу использовать в цепочке инструментов GNU для этого, о котором я не знаю!
Спасибо вам всем.
Ты не объяснил как Вы «восстанавливаете» содержимое. Я предполагаю, что вы используете GDB восстановить команда.
почему я должен «запустить» файл эльфа
restore
команда выполняет fopen
/fread
, а затем записывает целевую память, и для тот он нуждается в низшем процессе (который создается run
команда).
и «восстановить» содержимое файла bin в память
Очевидно, ГБД необходимо как-то иметь доступ к данным для отображения. Один из способов (так, как вы это делаете) — хранить данные в памяти.
Другой способ — сообщить GDB, как выглядит память во время выполнения, что достигается с помощью core
команда.
К сожалению, эта команда нуждается в действительном правильно отформатированном основном файле, чтобы указать, где в памяти были биты во время выполнения. Вы мог упаковать ваши данные в основной файл с помощью Perl скрипт, но это скорее проблема, чем стоит.
Других решений пока нет …