源码分析:静态分析 C 程序函数调用关系图

Posted 泰晓科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了源码分析:静态分析 C 程序函数调用关系图相关的知识,希望对你有一定的参考价值。

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

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

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

    还有一些开源的在线代码交叉检索工具,譬如LXR, OpenGrok 之类,它们避免了本地代码库而且提供了方便的 Web 展示,不过也无法提供函数关系的清晰展示。

    工欲善其事,必先利其器。今天我们来带着大家玩转一个小工具,叫 Callgraph”(具体介绍可以参考维基百科https://en.wikipedia.org/wiki/Call_graph)。它支持两种分析方式。一种叫动态(dynamic)方式,注意这里所谓的“动态”严格的说应该是指“运行期Run-time),即记录程序一次执行中的函数调用的过程。还有一种叫静态方式,即将整个程序代码中所有可能的执行路径全部描绘出来。

    本文这里主要侧重静态分析方式,介绍如何利用“Callgraph”把 C语言的函数调用树(或者说流程图)画出来。更多详细的内容请点击下方的“阅读原文”。


以上是关于源码分析:静态分析 C 程序函数调用关系图的主要内容,如果未能解决你的问题,请参考以下文章

源码分析神器 — Understand的使用教程

Windows平台下源码分析工具

分析函数调用关系图(call graph)的几种方法

源码分析:动态分析 Linux 内核函数调用关系

webpack 源码分析系列 ——loader

webpack 源码分析系列 ——loader