Технические вопросы и ответы QA1264

Генерация немаскируемого прерывания (NMI)

Q: Я должен сделать удаленную отладку на компьютере Mac, подвешивающемся в ядре. Как я прерываю эту систему, таким образом, я могу присоединить к ней от сеанса отладки ядра?

A: Если OS X запускается с DB_NMI набор битов в debug загрузочный аргумент, на мгновение нажимая кнопку питания системы генерирует немаскируемое прерывание вместо того, чтобы спать или разбудить систему.

Система читает debug флаги во время начальной загрузки от boot-args микропрограммная переменная.

Установить DB_NMI бит, запустите путем ввода этой команды в Терминал:

$ nvram boot-args

Это выведет на экран текущую установку загрузочных аргументов. Теперь, добавить debug=0x4 к текущим настройкам с этой командой:

$ sudo nvram boot-args="<current settings> debug=0x4"

Необходимо перезапустить компьютер для новых настроек для вступления в силу.

Для других полезных флагов отладки посмотрите, что Таблица 20-1 'Отлаживает флаги' Руководства по программированию Ядра: Когда Вещи Идут не так, как надо: Отладка Ядра.

Кнопка питания сохранит эту функциональность, пока OS X не будет перезапущен без DB_NMI набор битов. Можно очистить этот бит путем выпуска nvram команда с -d опция:

$ sudo nvram -d boot-args


История версии документа


ДатаПримечания
04.06.2013

Пересмотренный для OS X v10.9.

13.10.2008

Модернизированные и сделанные редакционные версии. Добавленные подробные данные имели отношение к основанному на Intel Macs.

26.04.2004

Неуказанные версии содержания.

23.04.2003

Новый документ, объясняющий, как генерировать немаскируемое прерывание (NMI) в системах Mac.