【发布时间】:2012-02-23 08:35:12
【问题描述】:
我发现this example 看起来像是输出了我想要的 C++ 内容。 Xcode项目中的Objective-C代码怎么做?
我看到提到 Doxygen 能够创建调用图,但我找不到示例。
(我想更好地了解clang,但是很难入门……)
【问题讨论】:
标签: objective-c xcode clang call-graph
我发现this example 看起来像是输出了我想要的 C++ 内容。 Xcode项目中的Objective-C代码怎么做?
我看到提到 Doxygen 能够创建调用图,但我找不到示例。
(我想更好地了解clang,但是很难入门……)
【问题讨论】:
标签: objective-c xcode clang call-graph
当然。您需要了解一些技巧,但还不错。
首先,您需要一个兼容版本的opt,因为它不随 Apple 提供的 LLVM 提供。我从 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 参数会以稍微不同的格式输出此信息。
【讨论】:
dot 命令是什么?是clang的一部分还是我必须单独安装?
.dot 文件(或在运行clang 之前过滤ObjC 文件?)