Абсолютно.Есть пара трюков, которые вам нужно понять, но это не так уж и плохо.
Во-первых, вам нужна совместимая версия opt
, поскольку она не поставляется с LLVM Apple.Я получил мой из macports:
port install llvm-3.0
Тогда вам нужно скомпилировать ваш файл.Выработка параметров иногда может быть немного болезненной.Самый простой способ - позволить Xcode собрать его, затем перейти к журналам и вырезать и вставить гигантскую строку сборки.Раньше я мог их взломать, но я стал слишком ленивым ....
Извлеките последний параметр -o
(удобно в конце строки компиляции) и замените:
-S -emit-llvm -o - | opt-mp-3.0 -analyze -dot-callgraph
Затем, как и в другом примере:
$ dot -Tpng -ocallgraph.png callgraph.dot
Имейте в виду, что в ObjC есть несколько функций, которые вызываются много , что выпочти никогда не волнуетВ частности, почти все, что начинается с objc_
.К счастью, формат DOT - это очень простой текстовый файл, и довольно легко написать сценарии постобработки, чтобы вырезать то, что вам не нужно.
Есть также параметр -print-callgraph
, который будет выводить эту информациюв несколько ином формате, если вы хотите продолжить обработку.