На протяжении всей истории существовал целый ряд методов, от мигающих огней на консоли, до использования аппаратных устройств, таких как ICE, до более современных методов, использующих довольно стандартные отладчики. Одним из методов, который чаще встречается среди разработчиков ОС, чем разработчиков приложений, является анализ дампа ядра. Посмотрите на что-то вроде mdb на солярисе, чтобы узнать, как разработчики ядра Solaris выполняют некоторую отладку. Также используются технологии отслеживания. Везде от довольно простых пакетов регистрации до более современных методов, таких как dtrace.
Также обратите внимание, что используемые методы зависят от уровня программного обеспечения. Начальная загрузка, как правило, является довольно трудным местом для того, чтобы разобраться в этом. Но после этого среда современных операционных систем все больше и больше напоминает настройку приложения, к которой вы привыкли. В конце концов, это весь код:)