objective-c - clang 可以为 Xcode 项目生成调用图吗(在 Objective-C 中?

标签 objective-c xcode clang call-graph

我找到了 this example看起来它输出了我想要的 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 参数,如果您想进行进一步处理,它将以稍微不同的格式输出此信息。

关于objective-c - clang 可以为 Xcode 项目生成调用图吗(在 Objective-C 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082687/

相关文章:

ios - UIButton 标题颜色选择和突出显示

ios - UiTableView 重新加载数据后保留选定的部分/行

iphone - 如何从 ABPeoplePickerNavigationController 获取街道地址

iphone - 获取一条线的坐标到数组

clang:有没有办法指定 c11 原子操作中使用的低级指令?

c++ - 有没有详细的Clang库API文档?

xcode - 我该如何做是将输入的数字乘以 slider 数字

ios - Firebase 错误地显示已删除的数据/Swift 3/Xcode 8.2

ios - 从 XCode 4 PhoneGap Build 中排除文件和目录

opencl - 如何使用 clang 将 OpenCL 编译为 ptx 代码?