Как Instruments собирает данные из iOS без доступности DTrace?

Я пытаюсь понять внутреннюю работу инструментов XCode. В MacOS он может полагаться на DTrace для сбора всех видов данных профилирования. На iOS он также способен на многое, но я неоднократно читал, что DTrace не был перенесен на iOS.

Так как это работает?

Документация Apple по DTrace мало что говорит о внутренней работе здесь. Однако я заметил, что при профилировании моего собственного приложения из XCode с использованием инструментов XCode, похоже, строит его по-другому. Может ли это означать, что он связывает некоторых автономных поставщиков DTrace с моим кодом?

Заранее спасибо!

/ E: Я бы щедро на этот вопрос с моими 6 пунктами репутации, если бы я только мог...

1 ответ

Решение

Для приложений iOS, работающих внутри Симулятора, очевидно, что Симулятор является программой Mac OS X, поэтому он может использовать DTrace для мониторинга всего, что делает Симулятор.

Для приложений iOS, работающих на iPhone, я согласен, что в документации мало что понимается о происходящем. Вероятно, это либо загрузка кода мониторинга в целевой процесс на iOS (либо путем добавления кода во время компиляции, либо путем связывания его во время выполнения), либо на iOS выполняется "традиционный отладчик" против целевого процесса для реализации трассировки. Это практически единственные варианты, если на уровне ядра не поддерживается DTrace.

Я никогда не использовал инструменты, но главное, что бросается в глаза, это то, что они способны собирать статистику ввода-вывода на уровне операционной системы, которая обычно не поддается измерению без DTrace. Я не уверен, потому что я не использовал его, но возможно, что эта статистика отслеживает ввод / вывод только с легко обнаруживаемых точек входа (т. Е. Системных вызовов, связанных с вводом / выводом из конкретного целевого процесса), или что другие специфические для iOS источники статистики, которые публикуются ОС. Например, многие системные статистические данные можно получить из Mac OS X, вызвав sysctl, В зависимости от того, какую статистику на самом деле собирают, инструменты могут просто использовать простые счетчики, подобные этим, для выполнения большей части работы.

Если вы действительно полны решимости найти ответ, было бы забавной задачей DTrace выяснить эту проблему с помощью самой DTracing Instruments. Удачи:-)

Другие вопросы по тегам