Инструменты командной строки для анализа расширений ядра
Можно упростить kext процесс разработки со следующими инструментами командной строки. Больше информации об этих инструментах может быть найдено в их соответствующих страницах справочника.
Генерируйте отладочные символы и подготовьте Kexts к загрузке
Используйте kextutil утилита, чтобы генерировать отладочные символы для Вашего kext и протестировать, может ли быть загружен Ваш kext. При отладке kext необходимо использовать kextutil загрузить Ваш kext вместо kextload.
Обычно используемый kextutil опции включают:
Фактически не загружает kext в ядро. Эта опция полезна, когда Вы только хотите генерировать отладочные символы или определить, может ли быть загружен kext.
Генерирует отладочные символы для kext в каталоге, указанном после этой опции.
Выводы, кажется ли kext, является загружаемым, вместе с диагнозом, если kext, кажется, не является загружаемым.
Обычно используемый вместе, они указывают это
System/Library/Extensionsне должен использоваться в качестве значения по умолчанию kext репозиторий при разрешении зависимостей для kext, и указанная папка должна использоваться вместо этого.
- - n / - без загрузок
- - s / - символы
- - t / - диагностика печати
- - e / «никакие системные расширения» и-r / - репозиторий
kextutil утилита включает дополнительные опции для моделирования различных ситуаций с загрузкой. Посмотрите kextutil страница справочника для получения дополнительной информации.
Выведите состояние загруженного Kexts
Используйте kextstat утилита для вывода следующей информации для каждого kext загрузилась в ядре:
Индекс загрузки kext (раньше отслеживал ссылки связи),
Число ссылок на kext от другого kexts
Адрес памяти пространства ядра kext
Размер, в байтах, kext
Сумма соединенной проводом памяти, в байтах, занятых kext
Идентификатор пакета kext
Версия комплекта kext
Индексы загрузки другого kexts, на который kext имеет ссылку
Посмотрите kextstat для получения дополнительной информации.
Определите зависимости Kext
Используйте kextlibs утилита для определения, какая библиотека kexts kext должна соединиться против того, для разрешения его символов. Необходимо перечислить идентификаторы пакета их библиотека kexts в OSBundleLibraries словарь информационного списка свойств Вашего kext.
Обычно используемый kextlibs опции включают:
Производит вывод XML, который можно скопировать и вставить для
OSBundleLibrariesсловарь информационного списка свойств Вашего kext.Символы дисплеев это
kextlibsне мог расположиться. Можно быть в состоянии определить местоположение этих символов при помощиkextfindутилита (см., Определяет местоположение Kexts).
- - xml
- - undef-символы
Посмотрите kextlibs для получения дополнительной информации.
Найдите Kexts
Используйте kextfind утилита для поиска kexts с пользовательскими запросами. В дополнение к его предикатам запроса, kextfind включает предикаты для генерации разграниченных вкладкой отчетов для последующей обработки.
Обычно используемый kextfind предикаты запроса включают:
Печать только kexts, которые определяют символ, указанный после этой опции. Этот предикат полезен для определения местоположения символов в Вашем kext это
kextlibsне может расположиться.Возвраты только библиотека kexts, против которого может соединиться другой kexts.
- - dsym / - определять-символ
- - lib / - библиотека
kextfind утилита содержит еще много предикатов запроса и предикатов отчета, которые можно использовать для подстраивания поиска. Посмотрите kextfind(8) для получения дополнительной информации.
Получите количества экземпляра
Используйте ioclasscount утилита для получения текущего числа экземпляров любого данного подкласса OSObject Класс C++ (который включает фактически все встроенные классы ядра). Количество экземпляра, возвращенное для класса, включает число экземпляров который прямые подклассы класса. Можно использовать ioclasscount для обнаружения пропущенных экземпляров, которые необходимо было освободить, перед kext был разгружен.
Посмотрите ioclasscount для получения дополнительной информации.
Просмотрите Реестр Набора I/O
Используйте приложение IORegistryExplorer (расположенный в /Developer/Applications/Utilities) просмотреть текущее состояние реестра Набора I/O. IORegistryExplorer также включает несколько поиска и просмотра опций помочь Вам переместиться по реестру.