Как реализованы отладчики Ring0 (режим ядра)? - PullRequest
3 голосов
/ 05 января 2012

Похоже, в сети не так много информации об этой теме.

Может ли кто-нибудь объяснить, какова общая идея отладчиков режима ядра и как реализованы такие инструменты?Из того, что я понял, похоже, что они внедряют свою собственную крошечную операционную систему, чтобы отладчик мог работать исключительно под пользовательской ОС, но я не совсем уверен.

Спасибо за ваше время.

1 Ответ

2 голосов
/ 05 января 2012

Для отладки ядра ОС необязательно реализовывать еще одну стелс-ОС.Пока отлаживаемое ядро ​​еще живо, оно может выполнять потоки, останавливать и возобновлять их (конечно, на всех процессорах, если система многопроцессорная), и есть способ связаться с ним с помощью консоли или выделенного I /O port, чего-то, этого достаточно.

Установка точек останова в потоках ядра обычно выполняется так же, как в пользовательских потоках.Так же, как и чтение и запись памяти.

Удобно выполнять отладку ядра, используя дополнительный ПК, на котором фактически работает отладчик.Два ПК могут быть подключены через последовательный порт, 1394, USB или сетевое соединение.Отладчик должен быть настроен на прослушивание команд отладки на порту отладки и соответствующий ответ (например, остановка / перезапуск выполнения, чтение / запись памяти, установка / сброс точки останова и т. Д. И т. Д.).Отладчик должен иметь выделенные потоки отладчика (или что-то похожее на потоки), чтобы выгрузить другие существующие потоки и выполнить запрошенные команды отладки (описанные выше).

...