• 函数调用关系/结构图Callgraph【转】


    转自:https://blog.csdn.net/qq_16775293/article/details/87919094?utm_medium=distribute.pc_relevant_ask_down.none-task-blog-blogcommendfrombaidu-1.nonecase&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-blogcommendfrombaidu-1.nonecas

    文章目录


    代码结构图

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


    Callgraph安装

    以 Ubuntu 为例,安装cflow和graphviz

    	$ sudo apt-get install cflow graphviz
    
    • 1

    接下来安装 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}
    
    • 1
    • 2
    • 3
    • 4

    最后安装gawk

        $ sudo apt-get install gawk
    
    • 1

    使用方法简介

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

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

    其中-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
    
    • 1

    运行结果

  • 相关阅读:
    洛谷#P5652#基础博弈练习题
    hgoi#20191112
    hgoi#20191111
    hgoi#20191109
    洛谷#P3674#小清新人渣的本愿
    hgoi#20191108
    hgoi#20191107
    树上差分
    树链剖分(树剖)
    LCA(最近公共祖先)问题
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/13827149.html
Copyright © 2020-2023  润新知