Skip to content

Latest commit

 

History

History
24 lines (18 loc) · 2.02 KB

GDB. Breakpoints.md

File metadata and controls

24 lines (18 loc) · 2.02 KB

#debug #gdb

Ресурсы

  1. Статья: https://sourceware.org/gdb/wiki/Internals/Breakpoint%20Handling

Связи

[[GDB. Общие понятия об отладке]]

Общее

  1. Различают два типа точек останова: аппаратные и программные
  2. Все (?) они вызывают исключение, которое позволяет остановить ход исполнения программы.

Аппаратные точки останова

  1. Аппаратные точки останова могут быть реализованы:
    1. при помощи внутренних регистров микросхемы, в которых хранится адрес для останова. Значение program counter (PC) должно совпадасть со значением регистра;
    2. через использование эмуляторов, которые остлеживают адресные строки;
    3. если в код программы заведомо были внедрены точки останова, есть специальные инструкции (например, в ПЗУ).
  2. Количество аппаратных точек останова может быть ограничено

Программные точки останова

  1. GDB заменяет программную инструкцию ловушкой или чем-то еще, что вызывает исключение. Когда пользователь решит продолжить выполнение программы, GDB возвращает исходную инструкцию.
  2. Не работает с ПЗУ, так как буквально меняется код программы.
  3. Размер инструкции с программной точкой сотанова должен быть минимальным, чтобы не перезаписать соседнюю инструкцию.