Ответ 1
Совершенно верно. Есть несколько трюков, которые вам нужно понять, но это не так уж плохо.
Сначала вам нужна совместимая версия 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
, который будет выводить эту информацию в несколько иной формат, если вы хотите продолжить обработку.