8

私は主に C および C++ プログラマーであり、非常に大きなコード ベース (gcc、Linux カーネル) の構造をすばやく理解する必要があることがよくあります。この点で役立つツールがあるかどうか疑問に思います。特にコール グラフ、プロジェクト全体のデータ構造参照、依存関係グラフ、クイック シンボル ロケーションなどに興味があります。ctags と cscope については知っていましたが、コール グラフのように、定義をすばやく見つけることができる、より視覚化されたものを探しています。関数の特定の呼び出しでグラフをルート化する、グラフを反転する (つまり、特定の関数へのすべての呼び出しを見つける) など。

4

3 に答える 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と無料です。

もちろん:

  1. GraphVizが生成するグラフはスタンドアロンであり、IDEの一部ではありません。
  2. Linux(カーネル)のコールグラフをこの方法で作成できるかどうかはよくわかりません。
于 2012-08-14T10:11:36.023 に答える
0

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

于 2012-08-14T10:04:19.073 に答える
0

cflow を試すことができます。内部の関数呼び出しのグラフが表示されます。ただし、あまり柔軟ではありません。

于 2012-08-14T10:54:47.743 に答える