Генерация немаскируемого прерывания (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. |