2

ねえ、指定された .c または .cpp ファイルのコール グラフを生成しようとしました。コール グラフを生成するための clang プラグインを作成します。次の関数を書きました。

class CGASTActionConsumer:public ASTConsumer{
  CallGraph *CG;
    public:
        CGASTActionConsumer(CallGraph *inCG):CG(inCG){}
      virtual bool HandleTopLevelDecl(DeclGroupDef DG)
       {
         for(DeclGroupRef::iterator i=begin(),e=end();i!=e;++i)
          {
            if(FunctionDecl *FD = dyn_cast<FunctionDecl>(D))
              {
                if(/* check function is valid for insertion to graph   */)
                  CG->addToCallGraph(FD,FD->isGlobal()); // add node in call graph
              }
          }
       }

}; 

外部の HandleTopLevelDecl 関数からグラフを印刷しようとすると、何も印刷されません。しかし、HandleTopLevelDecl 関数から print 関数を呼び出すと、各ノードの出力が出力されます。なぜこれが起こるのか誰か教えてもらえますか?と思います。

4

0 に答える 0