问题描述
运行
gcc -fdump-tree-all-graph main.cpp -o main
应该产生可读的点文件。但是,运行
dot .\main.cpp.027t.einline -Tpng -o "main.png"
Error: .\main.cpp.013t.cfg.dot: Syntax error in line 1 near 'subgraph'
Gcc 版本:10.2.0 Graphviz 版本:2.47.0
这个问题对于所有 C/C++ 文件仍然存在。我做错了什么?
编辑:通用 C++ 程序
int main() {}
subgraph "cluster_main" {
style="dashed";
color="black";
label="main ()";
fn_0_basic_block_0 [shape=Mdiamond,style=filled,fillcolor=white,label="ENTRY"];
fn_0_basic_block_1 [shape=Mdiamond,label="EXIT"];
fn_0_basic_block_2 [shape=record,fillcolor=lightgrey,label="{\<bb\ 2\>:\l\
|D.2331\ =\ 0;\l\
}"];
fn_0_basic_block_3 [shape=record,label="{\<bb\ 3\>:\l\
|\<L0\>:\l\
|return\ D.2331;\l\
}"];
fn_0_basic_block_0:s -> fn_0_basic_block_2:n [style="solid,bold",color=blue,weight=100,constraint=true];
fn_0_basic_block_2:s -> fn_0_basic_block_3:n [style="solid,constraint=true];
fn_0_basic_block_3:s -> fn_0_basic_block_1:n [style="solid,color=black,weight=10,constraint=true];
fn_0_basic_block_0:s -> fn_0_basic_block_1:n [style="invis",constraint=true];
}
}
解决方法
不是答案,但评论有点长
使用程序时:
fetchall
命令:
int main() {}
我得到的文件之一:main.cpp.027t.einline.dotwith content:
gcc -fdump-tree-all-graph main.cpp -o main
在 Cygwin 上使用:
digraph "main.cpp.027t.einline" {
overlap=false;
subgraph "cluster_main" {
style="dashed";
color="black";
label="main ()";
fn_0_basic_block_0 [shape=Mdiamond,style=filled,fillcolor=white,label="ENTRY"];
fn_0_basic_block_1 [shape=Mdiamond,label="EXIT"];
fn_0_basic_block_2 [shape=record,fillcolor=lightgrey,label="{\<bb\ 2\>:\l\
|_1\ =\ 0;\l\
}"];
fn_0_basic_block_3 [shape=record,label="{\<bb\ 3\>:\l\
|\<L0\>:\l\
|return\ _1;\l\
}"];
fn_0_basic_block_0:s -> fn_0_basic_block_2:n [style="solid,bold",color=blue,weight=100,constraint=true];
fn_0_basic_block_2:s -> fn_0_basic_block_3:n [style="solid,constraint=true];
fn_0_basic_block_3:s -> fn_0_basic_block_1:n [style="solid,color=black,weight=10,constraint=true];
fn_0_basic_block_0:s -> fn_0_basic_block_1:n [style="invis",constraint=true];
}
}
所以这对我来说没什么问题。