2012-08-14 22 views
7

私は主にCとC++のプログラマーであり、非常に大きなコードベース(gcc、Linuxカーネル)の構造をすばやく理解する必要があります。この点で助けとなる道具があるのだろうかと思います。私は特にコールグラフ、プロジェクト全体のデータ構造の参照、依存グラフ、素早いシンボルの配置などを知っています。私はctagsとcscopeについて知っていますが、私はすぐに定義を見つけることができるコールグラフのようなより多くの視覚化特定の呼び出しでグラフをルートにする、それを反転する(つまり、すべての呼び出しを特定の関数に置くなど)ソースコードを閲覧する、理解する、読めるツール

+0

RTCM - コンパイラのマニュアルを読んでください。ほとんどのコンパイラは、あなたが望むものをいくつか行います。私が使用するコンパイラも例外ではないと思います。 –

答えて

0

SourceInsightを試してみてください。コードをブラウズし理解することは非常に役に立ちます。それはあなたが要求した機能のほとんどを提供します。

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); 

あなたはこれらの関数を定義している行う、と記述する必要がありますあなたのロジックの中でコールグラフを生成します。

This extremely thorough tutorialは、-finstrument-functionsGraphVizを使用してコールグラフを作成する方法を説明しています。関係するすべてのツールはFOSSと無償です。もちろん

  1. GraphVizをが生成するグラフは、IDEの一部スタンドアロン、およびではありません。
  2. Linux(カーネル)のコールグラフを作成することが可能かどうか私は確信していませんこのように
0

cflowを試すことができます。それは内部関数の呼び出しのgrafを提供します。それは非常に柔軟ではありません。

関連する問題