Отладка операционной системы

Я проходил некоторые общие материалы об операционных системах и пораженный по вопросу. Как разработчик отладит при разработке операционной системы т.е. отладит саму ОС? Что инструменты доступны для отладки для разработчика ОС?

24
задан Andres Jaan Tack 8 January 2010 в 19:11
поделиться

6 ответов

Отладка ядра Hard , Потому что вы, вероятно, не можете полагаться на разбивку машины, чтобы пообщаться, что происходит. Кроме того, неправильные коды, вероятно, в страшных местах, таких как обработчики прерываний.

Существует четыре основных метода отладки операционной системы которого я знаю:

  1. Проверка здравоохранения вместе с выходом на экран.

    Ядра паникеры на Linux (, известные как «упс» Es ), являются отличным примером этого. Люди Linux написали функцию, которая распечатала бы то, что они могут узнать (включая трассировку стека), а затем остановиться все .

    Даже предупреждения полезны. Linux имеет охранники, созданные для ситуаций, когда вы можете случайно спать в обработчике прерывания. Функция MUTEX_LOCK , например, проверит (в Mixe_sleep ), независимо от того, находится ли вы в небезопасном контексте и распечатаете трассировку стека, если вы находитесь.

  2. Отладки

    Традиционно под отладкой все компьютер делает компьютер на последовательной линии на стабильную тестовую машину. С появлением виртуальных машин вы можете теперь провести одну серийный линейку выполнения VM в другую программу на одной физической машине, которая является супер удобной. Естественно, однако, это требует, чтобы ваша операционная система опубликовала, что она делает, и ждать отладчика подключения. KGDB (Linux) и Windbg (Windows) - некоторые такие отладки в ОС. VMware Явно поддерживает эту историю .

    Совсем недавно разработчики VM выяснили, как отладки ядра без последовательной линии или расширений ядра. VMware внедрил это в их недавнем.

    Проблема с отладкой в ​​операционной системе (в моей голове) связана с принципом принципом неопределенности . Прерывания (где большинство ваших жестких ошибок обязательно будут) являются асинхронными, частыми и недетерминистными. Если ваша ошибка относится к перекрытию двух прерываний в определенном виде, вы не будете , выставляют его с отладчиком; Ошибка, вероятно, даже не произойдет. Тем не менее, это может, а затем отладчик может быть полезен.

  3. Детерминированное воспроизведение

    Когда вы получите ошибку, которая, похоже, появляется только в производстве, вы желаете, чтобы вы могли записать, что произошло и воспроизвести его, как камера безопасности. Благодаря профессор, который я знал в Иллинойсе , теперь вы можете сделать это на виртуальной машине VMware. VMware и родственные люди описывают все это лучше, чем я могу, и они дают то, что выглядит как хорошая документация .

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

  4. Перемещение всего в пространстве пользователя.

    В конце концов, все еще более хрупкие в ядре, поэтому существует огромное преимущество в разработке для выполнения дизайна ядра (или Microkernel), где вы бьете компоненты режима ядра до их минимума. Для всего остального, вы можете использовать Myriad из Space DEV Tools, и вы будете намного счастливее. Предохранитель , расширение пользовательского пространства файловой системы, представляет собой канонический пример .

    Мне нравится эта последняя идея, потому что она похоже, что вы написали программу для записи. Циклический, нет?

24
ответ дан 29 November 2019 в 00:01
поделиться

В сценарии bootstrap (ОС с нуля) вам, вероятно, придется ввести возможности удаленной отладки (дамп памяти, протоколирование и т.д.) в ядро ОС на ранних стадиях, и использовать отдельную машину. Или вы можете использовать виртуальную машину/гипервизор.

Windows CE имеет компонент под названием KITL - Kernel Independent Transport Layer. Я думаю, что название говорит за itslf.

3
ответ дан 29 November 2019 в 00:01
поделиться

Можно использовать VM: например, отладочный код ring0 с помощью bochs/gdb. или Отладка ядра NetBSD с помощью qemu

или последовательной линии с чем-то вроде KDB.

3
ответ дан 29 November 2019 в 00:01
поделиться

журнал printf прикрепить к процессу серьезные модульные тесты и т. д.

1
ответ дан 29 November 2019 в 00:01
поделиться

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

0
ответ дан 29 November 2019 в 00:01
поделиться

Отладка операционной системы - занятие не для слабонервных. Поскольку отлаживается ядро, ваши возможности будут весьма ограничены. Обильное количество операторов printf - это один прием, кроме того, все зависит от того, какая именно "операционная система" отлаживается, мы можем говорить о

  • файловой системе
  • драйверах
  • управлении памятью
  • вводе/выводе на сырой диск
  • вводе/выводе на экран
  • ядре

Опять же, это очень разнообразное упражнение, как и в вышеприведенном случае, все они взаимодействуют друг с другом. Еще более сложным является тот факт, что если предположить, что вы будете отлаживать ядро, то как вы это сделаете, если среда выполнения не установлена должным образом (под этим я имею в виду ответственность ядра за загрузку двоичных исполняемых файлов).

Некоторые ядра могут (не все) иметь простой монитор отладки, на самом деле, если я правильно помню, в книге под названием "Разработка собственной 32-разрядной операционной системы" Ричарда Берджесса (Richard A Burgess), издательство Sams, он включил монитор отладки, который отображает различные состояния процессора, регистров и так далее.

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

Использование большого количества printf операторов для вывода ошибок, логов и т.д. на отдельный терминал или в файл является лучшей линией отладки, это действительно звучит кошмарно, но это будет стоить усилий.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

0
ответ дан 29 November 2019 в 00:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: