Точки останова оборудования ядра 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.