Инструкция по использованию отладчика с редактором emacs для языка ассемблера (GNU Assembler)
gdb - отладчик, предназначенный для использования прежде всего как бэкенд отладки, это мощная программа с огромным набором возможностей, но предоставляющая достаточно примитивный интерфейс пользователя. Гораздо более удобный интерфейс обеспечивается фронтендами - программами-оболочками к отладчику gdb.
Как интерфейс к gdb можно использовать и редактор emacs!
Откроем программу из задания 1 в редакторе emacs.
Перейдем к отладчику, используя команду M-x gdb (напомним, что клавиша M - Meta - на большинстве современных клавиатур соответствует Alt). Набираемая команда отображается в нижней части экрана.
Редактор предложит запустить gdb с указанными ключами. Согласимся.
Теперь мы имеем возможность выполнять команды gdb. При этом команды можно не набирать, а использовать кнопки на панели инструментов.
Однако, emacs предоставляет и еще более комфортный интерфейс. В меню Gud выберем раздел Gud-MI, а в нем пункт Display Other Windows. Теперь наряду с консолью gdb мы видим исходный код, регистры и их значения, консоль ввода-вывода и другие окна.
Установим контрольную точку. Это можно сделать, кликнув левой кнопкой мыши слева от нужной строки исходного кода.
Запускаем программу, нажав на кнопку Run с зеленой иконкой Go. Выполнение программы будет остановлено перед строкой с установленной контрольной точкой. В окне Registers отображаются регистры и их текущие значения.
Кнопкой Next Line выполним строку программы. Обратите внимание, что ввод данных со стандартного потока ввода и вывод в стандартный поток вывода обеспечивается через окно input/output, а значения переменных изменяются соответственно выполняемым инструкциям. Напомним, что команда Step Line в большинстве случае эквивалентна, но если, в выражении присутствует вызов функции, то Step Line переходит к ее инструкциям (вход в функцию), а Next Line выполняет строку за один шаг в любом случае.
Выполним еще один шаг. Обратите внимание на изменения.
Выполним оставшуюся часть программы, нажав на Continue.
Покажем пример подмены значения регистра. Пусть в ходе работы программы регистр eax получил значение 2345.
Щелкнув средней кнопкой мыши по значению в окне Registers, мы можем подменить его, напечатав новое значение
Набираем новое значение и подтверждаем изменение клавишей Enter.
Выполняя программу далее, убедимся, что в вычислениях используется новое значение.