函数调用关系/结构图Callgraph


代码结构图

  源码分析是程序员离不开的话题,无论是研究开源项目,还是平时做各类移植、开发,都避免不了对源码的深入解读.对于一个功能较复杂的函数,想轻易的看懂其函数调用结构比较困难,今天在次介绍一款可以帮助我们查看函数调用关系的工具Callgraph.
  使用Callgraph对前面博客中获取当前工程路径的代码进行函数调用分析,分析结果如下图.


Callgraph安装

以 Ubuntu 为例,安装cflow和graphviz

	$ sudo apt-get install cflow graphviz

接下来安装 tree2dotx 和 Callgraph,这里都默认安装到 /usr/local/bin。

    $ wget -c https://github.com/tinyclub/linux-0.11-lab/raw/master/tools/tree2dotx
    $ wget -c https://github.com/tinyclub/linux-0.11-lab/raw/master/tools/callgraph
    $ sudo cp tree2dotx callgraph /usr/local/bin
    $ sudo chmod +x /usr/local/bin/{tree2dotx,callgraph}

最后安装gawk

    $ sudo apt-get install gawk

使用方法简介

对Desktop下test.cpp文件中的main()函数进行函数调用分析

  1. 打开一个新的终端,先切换到Desktop路径下
	cd Desktop
  1. 然后输入下述命令
	callgraph -f main -d ./test.cpp

其中-f对应的参数代表需要分析的函数名,在这里对主函数main()进行分析.
-d对应的参数代表需要分析的程序地址,在这里对test.cpp进行分析.

  1. 确定需要分析的函数
      输入2中命令后会出现如下提示,该提示主要询问你需要检测test.cpp文件中的哪一个main函数,选取需要分析的main函数前面对应的编号,在这里只有只有一个main函数,因此输入对应编号1即可
  1. 输出结果
    输入对应编号后会自动生成函数调用图,默认使用Chrome/Chromium浏览器打开,生成的函数调用关系图与文件在同一目录下,以.svg结尾.

若没有安装Chrome/Chromium浏览器,则可以制定使用Ubuntu自带的firefox浏览器打开,需要在第2步中加入-b指令制定打开工具,如下所示

callgraph -f main -b firefox

运行结果

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值