Подтвердить что ты не робот

Может ли clang генерировать график вызовов для проекта Xcode (в Objective-C?

Я нашел этот пример, который выглядит так, как будто он выводит то, что я хочу для С++. Как это можно сделать для кода Objective-C в проекте Xcode?

Я вижу упоминания о том, что Doxygen способен создавать граф вызовов, но я не могу найти пример.

(Я хочу лучше узнать clang, но с этим трудно начать...)

4b9b3361

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