#debug #gdb
[[GDB. Общие понятия об отладке]]
- Различают два типа точек останова: аппаратные и программные
- Все (?) они вызывают исключение, которое позволяет остановить ход исполнения программы.
- Аппаратные точки останова могут быть реализованы:
- при помощи внутренних регистров микросхемы, в которых хранится адрес для останова. Значение program counter (PC) должно совпадасть со значением регистра;
- через использование эмуляторов, которые остлеживают адресные строки;
- если в код программы заведомо были внедрены точки останова, есть специальные инструкции (например, в ПЗУ).
- Количество аппаратных точек останова может быть ограничено
- GDB заменяет программную инструкцию ловушкой или чем-то еще, что вызывает исключение. Когда пользователь решит продолжить выполнение программы, GDB возвращает исходную инструкцию.
- Не работает с ПЗУ, так как буквально меняется код программы.
- Размер инструкции с программной точкой сотанова должен быть минимальным, чтобы не перезаписать соседнюю инструкцию.