Точки останова оборудования ядра Linux

Я хочу построить простой отладчик ядра Linux для архитектуры x86. Сначала я хочу установить точки останова. Мне было интересно, есть ли ядро ​​API для настройки регистров отладчика, и если да, то хорошая документация? Если нет ядра api для регистров отладчика, есть ли документация о том, как правильно настроить регистры вручную (используя инструкцию сборки "MOV")?

1 ответ

Это зависит от того, с какими версиями ядра вы хотели бы работать.

Существует API для установки аппаратных точек останова в ядре, по крайней мере, начиная с 2.6.33, хотя он мог немного измениться в версиях 3.0-3.2.

Взгляните на функцию register_wide_hw_breakpoint() в kernel/events/hw_breakpoint.c и те рядом с ним.

Документация кажется довольно скудной, но есть пример того, как использовать этот API в ядре, это может помочь.

Более сложный пример использования этого API можно найти в проекте RaceHound.

Другие вопросы по тегам