Инструменты командной строки для анализа расширений ядра

Можно упростить kext процесс разработки со следующими инструментами командной строки. Больше информации об этих инструментах может быть найдено в их соответствующих страницах справочника.

Генерируйте отладочные символы и подготовьте Kexts к загрузке

Используйте kextutil утилита, чтобы генерировать отладочные символы для Вашего kext и протестировать, может ли быть загружен Ваш kext. При отладке kext необходимо использовать kextutil загрузить Ваш kext вместо kextload.

Обычно используемый kextutil опции включают:

- n / - без загрузок

Фактически не загружает kext в ядро. Эта опция полезна, когда Вы только хотите генерировать отладочные символы или определить, может ли быть загружен kext.

- s / - символы

Генерирует отладочные символы для kext в каталоге, указанном после этой опции.

- t / - диагностика печати

Выводы, кажется ли kext, является загружаемым, вместе с диагнозом, если kext, кажется, не является загружаемым.

- e / «никакие системные расширения» и-r / - репозиторий

Обычно используемый вместе, они указывают это System/Library/Extensions не должен использоваться в качестве значения по умолчанию kext репозиторий при разрешении зависимостей для kext, и указанная папка должна использоваться вместо этого.

kextutil утилита включает дополнительные опции для моделирования различных ситуаций с загрузкой. Посмотрите kextutil страница справочника для получения дополнительной информации.

Выведите состояние загруженного Kexts

Используйте kextstat утилита для вывода следующей информации для каждого kext загрузилась в ядре:

Посмотрите kextstat для получения дополнительной информации.

Определите зависимости Kext

Используйте kextlibs утилита для определения, какая библиотека kexts kext должна соединиться против того, для разрешения его символов. Необходимо перечислить идентификаторы пакета их библиотека kexts в OSBundleLibraries словарь информационного списка свойств Вашего kext.

Обычно используемый kextlibs опции включают:

- xml

Производит вывод XML, который можно скопировать и вставить для OSBundleLibraries словарь информационного списка свойств Вашего kext.

- undef-символы

Символы дисплеев это kextlibs не мог расположиться. Можно быть в состоянии определить местоположение этих символов при помощи kextfind утилита (см., Определяет местоположение Kexts).

Посмотрите kextlibs для получения дополнительной информации.

Найдите Kexts

Используйте kextfind утилита для поиска kexts с пользовательскими запросами. В дополнение к его предикатам запроса, kextfind включает предикаты для генерации разграниченных вкладкой отчетов для последующей обработки.

Обычно используемый kextfind предикаты запроса включают:

- dsym / - определять-символ

Печать только kexts, которые определяют символ, указанный после этой опции. Этот предикат полезен для определения местоположения символов в Вашем kext это kextlibs не может расположиться.

- lib / - библиотека

Возвраты только библиотека kexts, против которого может соединиться другой kexts.

kextfind утилита содержит еще много предикатов запроса и предикатов отчета, которые можно использовать для подстраивания поиска. Посмотрите kextfind(8) для получения дополнительной информации.

Получите количества экземпляра

Используйте ioclasscount утилита для получения текущего числа экземпляров любого данного подкласса OSObject Класс C++ (который включает фактически все встроенные классы ядра). Количество экземпляра, возвращенное для класса, включает число экземпляров который прямые подклассы класса. Можно использовать ioclasscount для обнаружения пропущенных экземпляров, которые необходимо было освободить, перед kext был разгружен.

Посмотрите ioclasscount для получения дополнительной информации.

Просмотрите Реестр Набора I/O

Используйте приложение IORegistryExplorer (расположенный в /Developer/Applications/Utilities) просмотреть текущее состояние реестра Набора I/O. IORegistryExplorer также включает несколько поиска и просмотра опций помочь Вам переместиться по реестру.