Аппаратные точки наблюдения - как они работают? - PullRequest
5 голосов
/ 18 октября 2011

Как работают точки наблюдения GDB?Можно ли реализовать аналогичные функции для обеспечения доступа на уровне байтов в определенных местах?

Ответы [ 2 ]

9 голосов
/ 01 октября 2013

На x86 есть регистры отладки ЦП D0-D3, которые отслеживают адрес памяти.

В этом объясняется, как реализованы аппаратные точки останова в Linux, а также подробно описываются используемые функции процессора.

Еще одна статья об аппаратных точках останова.

3 голосов
/ 18 октября 2011

Я полагаю, что GDB использует MMU, чтобы страницы памяти, содержащие просматриваемые диапазоны адресов, были помечены как защищенные - тогда, когда возникает исключение для записи на защищенные страницы, GDB обрабатывает исключение, проверяет, соответствует ли адрес записи к определенной точке наблюдения, а затем либо возобновляет работу, либо переходит в командную строку gdb соответственно.

Вы можете реализовать нечто подобное для вашего собственного кода отладки или тестового жгута, используя mprotect , хотя вам потребуется реализовать обработчик исключений, если вы хотите сделать что-то более сложное, чем просто неудача при неудачной записи .

...