1. 安装

  sudo apt-get install cflow

2.使用

  cflow [options...] [file]...

例:

cflow main.c

生成main.c文件例的函数调用关系

cflow -x main.c

生成交叉引用表,查看函数调用的位置和文件

cflow -o call_tree.txt main.c

生成调用关系并输出到call_tree.txt文件

cflow -d 5 -o call_tree.txt main.c

指定输出的最大调用深度位5

其他选项:用 cflow --help查看

通用选项:
-d, --depth=NUMBER 设置流程图的绘制深度
-f, --format=NAME
使用指定的输出格式名。有效名称是‘gnu’(默认)和‘posix’
-i, --include=CLASSES 包含指定的符号类(见下)。在 CLASSES
之前放上 ^ 或 - 将它们从输出中省去
-o, --output=FILE 设置输出文件名(默认为
-,即标准输出)
-r, --reverse * 打印反向调用树
-x, --xref 仅生成交叉引用列表

--include 参数的符号类

_ 以下划线开始的符号名
s 静态符号
t typedefs(仅针对交叉引用)
x 所有的数据符号(外部的和静态的)

句法分析控制:

-a, --ansi * 仅接受 ANSI C 标准的源码
-D, --define=NAME[=DEFN] 将 NAME 预定义为一个宏
-I, --include-dir=DIR 将 DIR
目录添加至可被头文件搜索到的目录列表
-m, --main=NAME 假定主函数是个叫 NAME 的函数
-p, --pushdown=NUMBER 设置初始标识栈大小为 NUMBER
--preprocess[=COMMAND], --cpp[=COMMAND]
* 执行指定的预处理命令
-s, --symbol=SYMBOL:[=]TYPE Register SYMBOL with given TYPE, or define an
alias (if := is used). Valid types are: keyword
(or kw), modifier, qualifier, identifier, type,
wrapper. Any unambiguous abbreviation of the above
is also accepted
-S, --use-indentation * 依赖缩进风格
-U, --undefine=NAME 取消前面所有的 NAME 预定义

输出控制:

-b, --brief * 简洁输出
--emacs * 为与 GNU Emacs
联合使用而显示额外的格式输出
-l, --print-level * 打印调用关系树的嵌套结构
--level-indent=ELEMENT 控制图显示
-n, --number * 打印行号
--omit-arguments * 不在函数声明部分打印参数列表
--omit-symbol-names * 不在声明字符串中打印符号名
-T, --tree * 绘制 ASCII 形式的树

输出信息选项:

--debug[=NUMBER] 设定调试级别
-v, --verbose * 详细的错误诊断报告

-?, --help 显示此帮助列表
--usage 显示一份简洁的用法信息
-V, --version 打印程序版本

选项完整形式所必须用的或是可选的参数,在使用选项缩写形式时也是必须的或是可选的。

*
每个带有星号标记的选项是相反操作,就像前面带有‘no-’的长选项名一样。例如,--no-cpp
就是取消 --cpp 选项用的。

其他工具:

ctags:

为所有函数创建索引

cxref:

生成交叉引用表  

用cflow工具生成代码函数调用关系的更多相关文章

  1. 用cflow工具生成代码函数调用关系【转】

    转自:http://www.cnblogs.com/feng-zi/p/5469652.html . 安装 sudo apt-get install cflow .使用 cflow [options. ...

  2. 用callgraph生成的函数调用关系图

    Wu Zhangjin 创作于 2015/04/05 评论打赏 By Falcon of TinyLab.org 2015/04/03 1 故事缘由 源码分析是程序员离不开的话题.无论是研究开源项目, ...

  3. mybatis代码生成(generator工具生成代码)

    generator工具生成代码 下载地址     http://pan.baidu.com/s/1bY8C0I

  4. 利用graphviz软件和pycallgraph库自动生成Python代码函数调用关系图

    参考博文:https://blog.csdn.net/qq_36408085/article/details/82952846 https://blog.csdn.net/fondax/article ...

  5. cflow察看工程函数调用关系+Linux 0.11 内核实验环境

    http://savannah.gnu.org/projects/cflow http://tinylab.org/linux-0.11-lab/ http://ftp.gnu.org/gnu/cfl ...

  6. calltree查看工程代码中的函数调用关系

    http://blog.csdn.net/elitemouse/article/details/41680113 http://www.tinylab.org/callgraph-draw-the-c ...

  7. 生成代码,从 T1 到 T16 —— 自动生成多个类型的泛型

    当你想写一个泛型 的类型的时候,是否想过两个泛型参数.三个泛型参数.四个泛型参数或更多泛型参数的版本如何编写呢?是一个个编写?类小还好,类大了就杯具! 事实上,在 Visual Studio 中生成代 ...

  8. [转] 使用CodeViz生成C/C++函数调用关系图

    运行环境:虚拟机下的Ubuntu 11.04 结合Graphviz工具,使用CodeViz可以生成直观和漂亮的C/C++程序函数之间的调用关系图. 1.安装graphviz 在安装CodeViz之前, ...

  9. 利用代码生成工具生成基于ABP框架的代码

    在前面随笔,我介绍了整个ABP优化过框架的分层模型,包括尽量简化整个ABP框架的各个层的关系,以及纳入一些基类的辅助处理,使得我们对应业务分层类或者接口尽可能减少代码,并具有生产环境所需要的基类接口, ...

随机推荐

  1. ewebeditor下利用ckplayer增加html5 (mp4)全平台的支持

    学校数字化平台富文本编辑器一直用的ewebeditor,应该说非常的好,支持常用office文档的直接导入,极大的方便了老师们资料的上传,最近在规划整个数字化校园向全平台改版,框架采用bootstra ...

  2. 事件监听:诀别Android繁琐的事件注册机制——view.setOnXXXXListener

    本版本为1.0,支持较少,使用不够方便.相关封装逻辑结构已升级至2.0,详情可参见:更完善的安卓事件监听实现 先简单扯两句这几天学习下来对java事件监听机制的一点感触.客观地讲,java的事件监听机 ...

  3. poj1083 贪心

    K - 简单dp Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:10000KB     64bit ...

  4. bootstrap-paginator 分页控件的使用

    首先对js和css的引用 <link rel="stylesheet" href="reference/bootstrap/css/bootstrap.min.cs ...

  5. C++内存对象布局

    本章主要介绍了c++类中成员变量.函数对象的在内存中布局. 当c++类中不包含virtual机制类的函数时,内部nostatic member被包含在每一个class object之中,就想c str ...

  6. js实现点击ul/li等改变背景颜色

    今天项目遇到了标题所说的问题,找到一篇很高效的例子,值得学习. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//E ...

  7. 在js传递参数中含加号(+)的处理方式

    一般情况下,URL 中的参数应使用 url 编码规则,即把参数字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+).但是对于带有中文的参数来 ...

  8. hadoop中datanode无法启动

    一.问题描述 当我多次格式化文件系统时,如 [hadoop@xsh hadoop]$ ./bin/hdfs namenode -format 会出现datanode无法启动,查看日志(/usr/loc ...

  9. [C入门 - 游戏编程系列] 贪吃蛇篇(四) - 食物实现

    由于食物是贪吃蛇游戏中最简单的一部分,而且和其他部分关联性不强,基本上是一个独立的部分,所以我打算先实现它. 我的想法是食物必须在世界中才能被创造出来,也就是说,先有世界再有食物,所以我得先判断世界是 ...

  10. MVC过滤器详解和示例

    原文  http://blog.csdn.net/ankeyuan/article/details/29624005 MVC过滤器一共分为四个:ActionFilter(方法过滤器),ResultFi ...