dot画图的一点实践

dot画图的一点实践

绘制流程图工具, 支持中文. 只要定义好节点和连接, 自动生成图片. 支持html语法, 可以用来生成表格.

它的绘图分为二步

(1)编写dot文件, 它相当于源代码,后缀名不限于.dot(后缀名什么的都是浮云)

(2)运行dot命令生成图片, 基本格式为

dot -Tjpg <dot文件> -o <生成图片名>

其中 Tjpg指明生成jpg格式图片,类似的选项还有Tpng(生成png图片), Tgif(生成gif图片)等

如果不弹出错误提示, 你的图片就生成了. 否则按装错误提示信息修改源码

 

比如我的一个dot文件如下:

#Writen by CallTree on 2013/1/14 16:00:28
digraph forest {
subgraph main{
main->fun1->fun2->printf;
fun2->fun3->printf;
fun3->fun4->printf;
fun3->fun5->fun4->printf;
fun5->fun6;
fun5->fun7->printf;
fun5->printf;
main->fun2;
}
}

dot画图的一点实践

如果画无向图,将名称改为graph,"->"替换为“--”,

dot画图的一点实践

 

 

定义更详细的节点属性
除了可以用label定义节点名称, 还有
shape 定义节点的形状
sides 设置边数
peripheries 可以设置外框层数
orientatio 可以让节点旋转一个角度
color 定义节点边框颜色
style. 用边框颜色填充节点

 

修改上面dot文件如下:

#Writen by CallTree on 2013/1/14 16:00:28
graph forest {
subgraph main{
main[label="Main" shape=polygon,sides=5,color=green]
fun1[shape=box,orientatio=30]
fun2[shape=circle,peripheries=3,color=red]
fun3[color=blue,style=filled]
fun4[shape=house]
main--fun1--fun2--printf;
fun2--fun3--printf;
fun3--fun4--printf;
fun3--fun5--fun4--printf;
fun5--fun6;
fun5--fun7--printf;
fun5--printf;
main--fun2;
}
}

 

 

 dot画图的一点实践

设置连线属性
因为无法用唯一的值代示连线,所以必须在连线语包上方定义属性.命令关键字edge. 它将会一直影响下方的连线属性,下方的edge命令自动继承不矛盾属性.

#Writen by CallTree on 2013/1/14 16:00:28
graph forest {
subgraph main{
main[label="Main" shape=polygon,sides=5,color=green]
fun1[shape=box,orientatio=30]
fun2[shape=circle,peripheries=3,color=red]
fun3[color=blue,style=filled]
fun4[shape=house]
edge[color=red]
main--fun1--fun2--printf;
fun2--fun3--printf;
edge[color=green]
fun3--fun4--printf;
edge[style=dotted]
fun3--fun5--fun4--printf;
fun5--fun6;
fun5--fun7--printf;
fun5--printf;
main--fun2;
}
}

dot画图的一点实践

### 使用 gprof2dot 绘制性能分析图 要使用 `gprof2dot` 工具绘制性能分析图,可以按照以下方法操作: #### 准备工作 首先需要确保已经安装了必要的工具链。这包括 `gprof`, `graphviz`, 和 `gprof2dot`。可以通过包管理器或者手动编译的方式完成安装。 - 安装 Graphviz 可以通过命令实现(Linux 系统为例): ```bash sudo apt-get install graphviz ``` - 下载并安装 `gprof2dot.py` 脚本文件。通常可以从 Python 的官方仓库或者其他可信资源获取该脚本[^4]。 #### 数据采集阶段 为了生成性能分析的数据,在编译目标程序时需加入 `-pg` 参数以便嵌入额外的监控代码。之后执行被标记过的二进制文件即可记录运行过程中的调用关系以及时间消耗等信息[^2]。 ```bash gcc -o my_program my_code.c -pg ./my_program ``` 上述步骤完成后会产生名为 `gmon.out` 的输出文件,其中包含了所需的性能统计数据[^3]。 #### 图形化处理 利用之前准备好的 `gprof2dot.py` 脚本来解析由 `gprof` 输出的结果,并将其转化为适合绘图的形式;再借助于 `GraphViz` 将其渲染成为可视化的图片形式。 具体命令如下所示: ```bash python gprof2dot.py <(gprof ./my_program) | dot -Tpng -o profile_graph.png ``` 这里 `<()` 是 Bash 中的过程替换语法,用于将子shell的标准输出作为输入传递给外部命令。 如果希望调整最终图像的表现样式,则可查阅 `gprof2dot.py --help` 查看更多可用参数设置项。 --- ### 注意事项 尽管 `gprof` 结合 `gprof2dot` 提供了一种简单有效的可视化方式来理解程序内部结构及其效率特征,但它也存在一些局限性。例如无法很好地支持多线程环境下的测量需求等问题[^5]。因此在实际项目开发过程中可能还需要考虑其他更先进的替代方案如 Google Performance Tools (GPerfTools), Perf, 或者 Valgrind Callgrind 配合 KCachegrind 进行深入剖析。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值