Флаги «дизассемблирования» GDB /m и /s не работают при указании диапазона адресов.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Флаги «дизассемблирования» GDB /m и /s не работают при указании диапазона адресов.

Сообщение Anonymous »

Я хочу автоматизировать генерацию дизассемблирования с помощью GDB, и в конце концов я остановился на функции дизассемблирования. Я также хочу распечатать его с добавленным исходным кодом, чего можно добиться с помощью команды /s или /m. В идеале я бы ввел(

Код: Выделить всё

0xFFFFFF
— это произвольный номер строки, поэтому он проходит через весь файл):

Код: Выделить всё

(gdb) disas /m 0,0xFFFFFF
Первая проблема, с которой я столкнулся, заключается в том, что написано «Невозможно получить доступ к памяти по адресу 0x4», которую можно обойти, указав начальный адрес как 8. Но затем, когда я запускаю его, он показывает только строки сборки без исходного кода.
Для контекста я запускаю ARM-версию GDB (хотя только GDB ведет себя так же) с объектным файлом, который был скомпилирован из файла C++. Например:

Код: Выделить всё

arm-none-eabi-gdb --quiet build/L4/02_base/rtc.o -iex="set osabi none" -ex="set architecture armv4" -ex="set pagination off" -ex="set verbose off"
Единственное «решение», которое я нашел, — это указать самый первый символ, существующий в объектном файле (это _ZL8int8_MAX для этого файла):

Код: Выделить всё

(gdb) disas /m _ZL8int8_MAX,+0xFFFFFF
Проблема в том, что это невозможно автоматизировать (и, честно говоря, часто это даже не работает).
Кто-нибудь видел что-нибудь подобное? В идеале GDB выводит исходный код вместе со сборочными линиями, чего не происходит, когда я указываю диапазон адресов.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ress-range
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»