[授权发表]源码分析:静态分析 C 程序函数调用关系

本文介绍了使用Callgraph工具分析C语言程序的函数调用关系,包括安装Callgraph、分析Linux 0.11和新版Linux的函数调用树。通过cflow、tree2dotx和dot工具,将调用关系转化为图形,帮助理解源码结构,提高分析效率。
摘要由CSDN通过智能技术生成

By Falcon of TinyLab.org
2015/04/03

最初发表:泰晓科技 – 聚焦嵌入式 Linux,追本溯源,见微知著!
原文链接:源码分析:静态分析 C 程序函数调用关系
评论说明:为更好地聚合大家的讨论,请到上面原文的评论区回复。


故事缘由

源码分析是程序员离不开的话题。无论是研究开源项目,还是平时做各类移植、开发,都避免不了对源码的深入解读。

工欲善其事,必先利其器。今天我们来玩转一个小工具,叫 Callgraph,它可以把 C 语言的函数调用树(或者说流程图)画出来。

传统的命令行工具 Cscope, Ctags 可以结合 vim 等工具提供高效快捷的跳转,但是无法清晰的展示函数内部的逻辑关系。

至于图形化的IDE,如 QtCreator, Source Insight, Eclipse, Android Studio 等,却显得笨重,而且不一定支持导出调用关系图。

开源软件在线代码交叉检索一文中我们也介绍到了诸如 LXR, OpenGrok 之类的工具,它们避免了本地代码库而且提供了方便的 Web 展示,不过也无法提供函数关系的清晰展示。

下面开始 Callgraph 之旅。

安装 Callgraph

Callgraph 实际由三个工具组合而成。

  • 一个是用于生成 C 函数调用树的 cflow 或者 calltree,下文主要介绍 cflow。
  • 一个处理 dot 文本图形语言的工具,由 graphviz 提升。建议初步了解下:DOT 语言
  • 一个用于把 C 函数调用树转换为 dot 格式的脚本:tree2dotx

以 Ubuntu 为例,分别安装它们:

$ sudo apt-get install cflow graphviz

如果确实要用 calltree,请通过如下方式下载。不过 calltree 已经年久失修了,建议不用。

$ wget -c https://gitlab.com/tinylab/linux-0.11/raw/master/tools/calltree

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


                
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值