コールツリーのインストールと使用

目次

0 calltreeとgraphvizの関係

1graphviz のインストールは非常に簡単です。 

2 難しい部分は、コードの変更が必要となるコールツリーのインストールです。

Doxygen の使用

 参考

 この人のnoteはなかなか良いので、何もすることがない人は見てみてください。


0 calltreeとgraphvizの関係

関数呼び出しグラフを描画する場合は、calltree とgraphviz という 2 つのツールを使用する必要があります。

calltree は関数呼び出し間の関係を生成するために使用され、graphviz は関係図に基づいて画像または PDF を生成するために使用されます。

1graphviz のインストールは非常に簡単です。 

calltreeで生成したドットを使って描画するプログラムはgraphvizで、以下の公式サイトのページからダウンロードできます。

ダウンロード | グラフビズ

または、コマンドを使用して Ubuntu を直接インストールします

sudo apt-get installgraphviz

2 難しい部分は、コードの変更が必要となるコールツリーのインストールです。

まずソースコードをダウンロードします。

Schily Tools - SourceForge.net で /calltree を参照

Calltree - フリー ソフトウェア ディレクトリ

https://osdn.net/projects/sfnet_schilytools/downloads/calltree/calltree-2.3.tar.bz2/

実際、以下の README にはコンパイル コマンドについてすでに記載されています。

https://github.com/xunknown/calltree/blob/master/GUIDE

インストール:

ダウンロードアドレス: http://download.chinaunix.net/download.php?id=2245&ResourceID=1172

解凍後すぐに make するだけです。make プロセス中にエラーが発生します。これを解決するコマンドは次のとおりです。

1、cp RULES/i686-linux-cc.rul RULES/x86_64-linux-cc.rul

 このエラーが発生した場合は、コマンド 1 を実行してください

2、

 

探す 。-name "*.[c|h]" |xargs sed -i -e "s/fexecve/fexecve_calltree/"
find 。-name "*.[c|h]" |xargs sed -i -e "s/getline/getline_calltree/"
find 。-name "*.[c|h]" -exec grep getline -n​​H {} \;

探す 。-name "*.[c|h]" -exec grep fexecve -nH {} \;

その後、make は成功します。install を作成するときに忘れずに sudo を追加してください。そうしないと、権限の問題により一部のディレクトリが正常に cp できなくなります。


3.
インストール後、/usr/bin ディレクトリにソフトリンクします。 ln -s /home/XXX/calltree/OBJ/x86_64-linux-cc/calltree /usr/bin/calltree 上記のソフトリンクは作成しませんでしたが、検索します
。コールツリーのインストールディレクトリ

 

 次に、PATH パスを /etc/profile に追加すると、任意のディレクトリで呼び出すことができます。

 その後、source /etc/profile が有効になります。任意のディレクトリを呼び出した後、Tab キーを押してコマンドを完了します。成功したことがわかります。 

その後、作成者が提供するコマンドに従って Linux カーネルまたは libuv を分析できます。

使用:
-g 関数が配置されているファイルのディレクトリを出力します。

-m パラメータは、main 関数内の関数呼び出し関係を分析するためにのみ使用されます。

-p パラメータがデフォルトです。これは、コードが C 言語プリプロセッサを使用して分析されることを示します。欠点は、私たちが気にしないメッセージが大量に生成されることです。

-np と -p は逆です。コードの分析に C 言語プリプロセッサを使用しないでくださいと書かれています。指定した場合、解析時にエラーが発生する可能性があります。なぜなら、オープンソース プロジェクトのように、前処理を必要としないプロジェクトがどれだけあるでしょうか?

-xvcg パラメーターは、VCG ソフトウェアで処理できる形式でファイルをエクスポートすることを示します。
-dot パラメーターは、graphviz で処理できるドット形式ファイルのエクスポートを示します。

List を使用すると、分析する必要がある関数内の関数呼び出しのみを指定できます。

もう 1 つの重要なオプションは listfunction で、その省略形は lf で、特定の関数の呼び出しのみを出力するために使用されます。

次のいずれかを使用します。

#calltree -np -b list=start_kernel Depth=3 `find ./init/ ./kernel/ -name "*.c"` > マップ

#vi マップ


2 つを使用します:
calltree -np -b -dot list=start_kernel ./init/*.c > ~/start_kernel.dot
dot -T png start_kernel.dot -o ./testhaha.png

3 つを使用します:
calltree -dot list="ev_run" *.c > ev_run.dot
     
dot -Tgif ev_run.dot -o ev_run.gif


参考リンク:
https://www.2cto.com/kf/201707/660151.html

http://www.cnblogs.com/mylinux/p/6145625.html


Doxygen の使用

ここに添付されているのは、Windows プラットフォーム用のコール グラフを生成でき、単独で使用できるツールです。

Doxygen: ダウンロード

Linux 部分は次の 2 つのコマンドを使用してインストールできます。

sudo apt install doxygen

sudo apt install doxygen-gui

参考資料は [Linux|doxygen +graphviz] 注釈なしで新しいプロジェクトをすばやく開始するにはどうすればよいですか? doxygen +graphviz を使用して、プロジェクト ドキュメントをすばやく生成します。- ほぼ知っています

ターミナルに「doxywizard」と入力して  ツールを起動します

 私の構成は上に示したとおりです

次のタブで、最初の 6 項目を確認します。

 

 これら 2 つをチェックしてからパスを指定する必要があります

 開いてみると、ここにはたくさんの参考コンテンツがあります。

関数呼び出し図もいくつかあります 

大量のindex.htmlが生成され、ファイルが断片化しすぎているため、hugeCHMを使用してhtmlをchmに変換すると見やすくなります。

 パッケージのサイズは以前の 500M から 120M に変更されましたが、それでも大きすぎ、形式も html ほど優れていないため、html バージョンを確認することをお勧めします。


 参考

cflowアドレス

GNU cflow


 この人のnoteはなかなか良いので、何もすることがない人は見てみてください。

ソフトウェア開発プラットフォームと言語ノート集 (超詳細)

私は、calltree のより良い代替手段として、callgraph という別のツールを発見しました。

静的解析 C プログラム関数呼び出し図 - ソフトウェア開発プラットフォームと言語ノート集 (超詳細)
 

おすすめ

転載: blog.csdn.net/scarlettsp/article/details/131654103