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