用Graphviz进行可视化操作──绘制函数调用关系图

=200) window.open(http://oss.lzu.edu.cn/blog/attachment/11_7_0236d8b4ce3859e.jpg);" height=116 src="http://oss.lzu.edu.cn/blog/attachment/11_7_0236d8b4ce3859e.jpg" width=200 onload="if(this.width >
摘要由CSDN通过智能技术生成


描述: calltree.jpg
图片: 
描述: tree.jpg
图片:
描述: calltreefilter.jpg
图片:

by falcon<zhangjinw@gmail.com>
2007-11-14

    也许你对着一大堆数据无从着手,可却想找出数据中蕴藏的规律;也许你朦胧地知道文件系统就是一个树形的结构,但是却想有一个整体的轮廓;也许你对某个软件的结构略微清楚,但希望能够直观地看到整个软件的数据流程。
    不错,开源世界可以满足你的需求,用gnuplot可以把统计数据完美地呈现在一个图中,用Graphviz的dot工具可以把文件系统、函数调用树完美的勾画出来。我们这里仅仅关注Graphviz,gnuplot的用法你可以从网络中搜索到成千上万的资料,也可以直接到官方去看文档。
    Graphviz提供了一种描述图形的语言DOT,易于理解和通过脚本语言生成,dot工具可以根据DOT语言描述的图形绘制出各种格式的图形,这些格式包括svg和jpg等。
    关于Graphviz的详细用法和使用文档这里不介绍,请看它的官方网站:http://www.graphviz.org
    这里将主要介绍:如何把诸如文件系统、函数调用关系的结构通过Graphviz给呈现出来。
    对于文件系统的结构,你可以通过tree命令展示出类似下面的结构。

$  tree -L 1 -d linux-2.6.22
linux-2.6.22
|-- Documentation
|-- arch
|-- block
|-- crypto
|-- drivers
|-- fs
|-- include
|-- init
|-- ipc
|-- kernel
|-- lib
|-- mm
|-- net
|-- scripts
|-- security
|-- sound
`-- usr


    对于函数调用关系,calltree(当然还有很多类似的工具,gprof,call,valgrind,kft,它们的原理可以看看第一篇参考资料)可以反应出来。这里看看calltree的结果(它的详细用法见参考资料)。

$ calltree -gb -np -m *.c
main [trace.c:19]:
|   addCallTrace [symbols.c:134]
|   |   lookupSymbol [symbols.c:51]
|   |   |   assert
|   |   stackNumElems [stack.c:26]
|   |   stackTop [stack.c:32]
|   |   |   assert
|   addSymbol [symbols.c:106]
|   |   assert
|   |   translateFunctionFromSymbol [symbols.c:69]
|   |   |   fread
|   |   |   pc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值