Инструменты командной строки для анализа расширений ядра
Можно упростить 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 также включает несколько поиска и просмотра опций помочь Вам переместиться по реестру.