私は主に C および C++ プログラマーであり、非常に大きなコード ベース (gcc、Linux カーネル) の構造をすばやく理解する必要があることがよくあります。この点で役立つツールがあるかどうか疑問に思います。特にコール グラフ、プロジェクト全体のデータ構造参照、依存関係グラフ、クイック シンボル ロケーションなどに興味があります。ctags と cscope については知っていましたが、コール グラフのように、定義をすばやく見つけることができる、より視覚化されたものを探しています。関数の特定の呼び出しでグラフをルート化する、グラフを反転する (つまり、特定の関数へのすべての呼び出しを見つける) など。
質問する
1655 次
3 に答える
5
コールグラフを作成したい場合は、GCCを使用して独自のグラフを作成できます-finstrument-functions
。
基本的に、そのオプションを有効にしてプログラムをコンパイルすると、GCCは、ターゲットプログラムが関数に出入りするたびに、次の関数を呼び出します。
void __cyg_profile_func_enter (void *this_fn,
void *call_site);
void __cyg_profile_func_exit (void *this_fn,
void *call_site);
あなたがする必要があるのは、これらの関数を定義し、そこにコールグラフを作成するためのロジックを書くことです。
この非常に徹底的なチュートリアル-finstrument-functions
では、とGraphVizを使用してコールグラフを作成する方法について説明します。関連するすべてのツールはFOSSと無料です。
もちろん:
- GraphVizが生成するグラフはスタンドアロンであり、IDEの一部ではありません。
- Linux(カーネル)のコールグラフをこの方法で作成できるかどうかはよくわかりません。
于 2012-08-14T10:11:36.023 に答える
0
SourceInsightをお試しください。コードを参照して理解するのに非常に役立ちます。それはあなたが要求したほとんどの機能を提供します。
于 2012-08-14T10:04:19.073 に答える
0
cflow を試すことができます。内部の関数呼び出しのグラフが表示されます。ただし、あまり柔軟ではありません。
于 2012-08-14T10:54:47.743 に答える