Во время одного из моих сеансов отладки (FWIW, ARM) я заметил, что выходные данные дизассемблирования с чередованием исходного кода из GDB и objdump -S
отличаются интересным образом: objdump
кажется, что они перескакивают через отдельные/группы инструкций и отображают исходную строку, из которой эти инструкции были сгенерированы ( порядок инструктажа). Дизассемблирование GDB, с другой стороны, похоже, проходит через исходные строки и перечисляет все инструкции по сборке, сгенерированные из этой исходной строки (исходный порядок).
Для кода -O0
вывод обеих программ будет выглядеть одинаково. Но для оптимизированного кода дизассемблирование GDB более полезно, поскольку оно собирает все эти разбросанные в противном случае инструкции в одном месте, так что легко увидеть, что сгенерировано одной этой исходной строкой (очевидно, в этом случае адреса инструкций не будут отображаться). быть непрерывным).
Я думаю, что обе формы полезны по-своему. Мой вопрос заключается в том, можно ли настроить поведение отображения любой программы. IOW, могу ли я указать GDB отображать как objdump
или указать objdump
отображать как GDB? Кроме того, есть ли другие инструменты, которые могут выполнить этот подвиг?
ТИА.