我发现这个示例看起来像是输出了我想要的 C++ 内容。Xcode项目中的Objective-C代码怎么做?
我看到提到 Doxygen 能够创建调用图,但我找不到示例。
(我想更好地了解clang,但是很难入门……)
我发现这个示例看起来像是输出了我想要的 C++ 内容。Xcode项目中的Objective-C代码怎么做?
我看到提到 Doxygen 能够创建调用图,但我找不到示例。
(我想更好地了解clang,但是很难入门……)
绝对地。您需要了解一些技巧,但这还不错。
首先,您需要一个兼容版本的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
如果您想进行进一步处理,还有一个参数会以稍微不同的格式输出此信息。