clang libtooling生成的调用图(.dot)没有节点标签

clang libtooling生成的调用图(.dot)没有节点标签,clang,llvm-clang,libtooling,Clang,Llvm Clang,Libtooling,我是clang libtooling的初学者。 我正在尝试使用clang::CallGraph viewGraph生成调用图的.dot文件。 代码如下: clang::CallGraph mCG; for (unsigned i = 0 ; i < DeclsSize ; ++i) { clang::FunctionDecl *FnDecl = (clang::FunctionDecl *) (Decls[i]); mCG.addToCallGraph(FnDecl);

我是clang libtooling的初学者。 我正在尝试使用clang::CallGraph viewGraph生成调用图的.dot文件。 代码如下:

clang::CallGraph mCG;

for (unsigned i = 0 ; i < DeclsSize ; ++i) {
    clang::FunctionDecl *FnDecl = (clang::FunctionDecl *) (Decls[i]);
    mCG.addToCallGraph(FnDecl);
}

mCG.viewGraph();
string outputPath = "./";
outputPath.append("CallGraph");
outputPath.append(".dot");

// Write .dot
std::error_code EC;
raw_fd_ostream O(outputPath, EC, sys::fs::F_RW);

if (EC) {
    llvm::errs() << "Error: " << EC.message() << "\n";
    return;
}

llvm::WriteGraph(O, &mCG);
clang::CallGraph mCG;
for(无符号i=0;i
有趣的是,生成的调用图文件(.dot)没有节点的标签,尽管我可以用所有节点的名称正确打印调用图

以下是生成的图片:

我很好奇为什么会这样。我的代码中哪一部分是错误的


提前谢谢

我解决了这个问题,但我不确定这是否正确。 我没有调用函数“viewGraph()”,而是使用“llvm::WriteGraph”

代码如下:

clang::CallGraph mCG;

for (unsigned i = 0 ; i < DeclsSize ; ++i) {
    clang::FunctionDecl *FnDecl = (clang::FunctionDecl *) (Decls[i]);
    mCG.addToCallGraph(FnDecl);
}

mCG.viewGraph();
string outputPath = "./";
outputPath.append("CallGraph");
outputPath.append(".dot");

// Write .dot
std::error_code EC;
raw_fd_ostream O(outputPath, EC, sys::fs::F_RW);

if (EC) {
    llvm::errs() << "Error: " << EC.message() << "\n";
    return;
}

llvm::WriteGraph(O, &mCG);
string outputPath=“./”;
append(“调用图”);
追加(“.dot”);
//写,点
std::错误代码EC;
原始fd_ostream O(输出路径、EC、系统::fs::F_RW);
国际单项体育联合会(欧共体){
llvm::errs()