cflow 命令

用途

生成外部引用的 C 和 C++ 流程图。

语法

曲流-d 数字 ] [  -我 目录 ] [  -i _ ] [  -i p ] [  -i x ] [  -q选项 ] [  ] [  -MA ] [  -U 名称 ] [  -恩德数字 ] [  -恩尔数字 ] [  -恩数字 ] [  -恩特数字 ] [  -D 名称[=定义 ] ] 文件 ...

描述

cflow 命令分析 C、C++、yacclex、汇编程序和目标文件并将它们的外部引用图表写至标准输出。

注: 通过 cflow 命令处理 C++ 语言文件需要存在 IBM® C Set + + Compiler/6000 包。

cflow 命令将具有 .y.l .c 后缀的文件发送至 yacc 命令、 lex 命令和 cpp 命令用于处理。 然后,lint 命令已修改的第一次传递会处理 yacclex cpp 输出或任何 .i 文件。 cflow 命令将具有 .C 后缀的文件发送至 C Set++ 编译器。

cflow 命令汇编具有 .s 后缀的文件,并从符号表抽取信息(如同它处理 .o 文件一样)。 从该输出,cflow 命令会生成外部引用图并将它写至标准输出。

输出的每一行提供以下信息(按从左至右的顺序):

  • 后跟足够选项卡的行号,用于指示嵌套级别
  • 全局名称,冒号及其定义。

名称通常是一个未被定义为外部函数的函数,也不是以下划线字符开头的函数(请参阅 -i_ -i 包含标志)。

对于从 C 和 C++ 源文件抽取的信息,其定义包括抽象的类型说明(例如,char *)、被尖括号括起的源文件名和可在其中查找到定义的行号。 从目标文件抽取的定义包含文件名和出现符号的位置计数器,比如 .text.datacflow 命令在 C 样式的外部名称中删除开头的下划线字符。

一旦 cflow 命令显示了名称,稍后会引用仅包含可在其中查找到定义的 cflow 行号的名称。 For undefined references, 曲流 displays only < > (angled brackets).

如果嵌套级别太深,而无法在可用空间中显示,通过管道将输出从 cflow 命令传递至 pr 命令,并使用 -e 标志压缩制表符扩展以使每个制表符停止位少于八个空格。

注: 要确保 cflow 命令生成的行号与 lexyacc 文件匹配, 必须将 .l.y 文件发送到 cflow 命令。

标志

描述
-d 数字 设置为一个十进制整数,即截断流程图的深度。 缺省情况下,此为较大数。 不要将截断深度设置为非正的整数。
-i _ 包括以下划线字符开头的名称。 缺省值不包括这些函数(如果使用 -ix 标志,那么不包括对应数据)。
-i p 禁用 ANSI 函数原型。 缺省选项将使用可用的原型声明来填写未定义的函数信息。
-i x 包括外部和静态数据符号。 缺省值仅包括函数。
-r 产生显示每个函数调用者的反向列表,按所调用的函数排序。
-ma 指定 ANSI 方式。 cflow 命令希望 ANSI C 代码是此方式的。 操作的缺省方式是扩展方式。
-Nd数字 将维表大小更改为 Number 参数。 Number 的缺省值为 2000。
-Nl编号 将类型节点数更改为 Number 参数。 Number 的缺省值为 8000。
-Nn数字 将符号表大小更改为 Number 参数。 Number 的缺省值为 1500。
-Nt编号 将树节点数更改为 Number 参数。 Number 的缺省值为 1000。

此外,cflow 命令能识别 cpp 命令(宏预处理器)的以下标志:

描述
-D 名称[=定义] 定义 Name 参数,如同由 #define 语句定义一样。 缺省的 Definition 是 1。
-q选项 传递 -qOption 至预处理器。 例如,-qmbcs设置当前语言环境和当前语言环境指定的多字节方式-qidirfirst修改 #include file_name 伪指令包含的文件的搜索顺序。
-I 目录 将指定的 Directory 添加至 cflow 程序在其中搜索 #include 文件的目录列表。
-U 名称 除去 Name 参数的任何初始定义,其中 Name 是由特定预处理器预定义的保留符号。

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 成功完成。
> 0 发生错误。

示例

  1. 要生成组成程序的这些 C 文件的缺省流程图,请输入:
    cflow timeout.c kill.c error.c 
  2. 要生成具有单一函数嵌套级别的 cflow 图形,请输入:
    cflow -d1 resam.c pptp.c ptpt.c rrr.c whn.c
  3. 要生成 lex 程序的 cflow 图形,请输入:
    cflow scan.l
  4. 要生成 yacc 程序的 cflow 图形,请输入:
    cflow yaccfile.y
  5. 要生成显示示例 2 中使用的 C 文件中每个函数的调用者的反向列表,请输入:
    cflow -r resam.c pptp.c ptpt.c rrr.c whn.c

文件

描述
/usr/ccs/bin/cflow cflow 命令的驱动程序
/usr/ccs/lib/cflow1 cflow 命令的可执行(文件)
/usr/ccs/lib/dag cflow 命令的可执行(文件)
/usr/ccs/lib/flip cflow 命令的可执行(文件)
/usr/ccs/lib/lpfx cflow 命令的可执行(文件)
/usr/ccs/lib/nmf cflow 命令的可执行(文件)
/var/tmp/cf.* cflow 命令创建的暂时文件。