14

C++に必要なものを出力するように見えるこの例を見つけました。XcodeプロジェクトのObjective-Cコードに対してどのように行うことができますか?

Doxygen がコール グラフを作成できるという言及が見られますが、例が見つかりません。

(clangをもっと知りたいけど、なかなか始められない…)

4

1 に答える 1

12

絶対。理解する必要があるいくつかのトリックがありますが、それほど悪くはありません。

まず、互換性のあるバージョンの が必要です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さらに処理を行う場合に、この情報をわずかに異なる形式で出力するパラメーターもあります。

于 2012-01-31T18:14:07.133 に答える