cflow 命令
用途
生成外部引用的 C 和 C++ 流程图。
语法
曲流 [ -d 数字 ] [ -我 目录 ] [ -i _ ] [ -i p ] [ -i x ] [ -q选项 ] [ - ] [ -MA ] [ -U 名称 ] [ -恩德数字 ] [ -恩尔数字 ] [ -恩数字 ] [ -恩特数字 ] [ -D 名称[=定义 ] ] 文件 ...
描述
cflow 命令分析 C、C++、yacc、lex、汇编程序和目标文件并将它们的外部引用图表写至标准输出。
注: 通过 cflow 命令处理 C++ 语言文件需要存在 IBM® C Set + + Compiler/6000 包。
cflow 命令将具有 .y、.l 和 .c 后缀的文件发送至 yacc 命令、 lex 命令和 cpp 命令用于处理。 然后,lint 命令已修改的第一次传递会处理 yacc、lex 和 cpp 输出或任何 .i 文件。 cflow 命令将具有 .C 后缀的文件发送至 C Set++ 编译器。
cflow 命令汇编具有 .s 后缀的文件,并从符号表抽取信息(如同它处理 .o 文件一样)。 从该输出,cflow 命令会生成外部引用图并将它写至标准输出。
输出的每一行提供以下信息(按从左至右的顺序):
- 后跟足够选项卡的行号,用于指示嵌套级别
- 全局名称,冒号及其定义。
名称通常是一个未被定义为外部函数的函数,也不是以下划线字符开头的函数(请参阅 -i_ 和 -i 包含标志)。
对于从 C 和 C++ 源文件抽取的信息,其定义包括抽象的类型说明(例如,char *)、被尖括号括起的源文件名和可在其中查找到定义的行号。 从目标文件抽取的定义包含文件名和出现符号的位置计数器,比如 .text 或 .data。 cflow 命令在 C 样式的外部名称中删除开头的下划线字符。
一旦 cflow 命令显示了名称,稍后会引用仅包含可在其中查找到定义的 cflow 行号的名称。 For undefined references, 曲流 displays only < > (angled brackets).
如果嵌套级别太深,而无法在可用空间中显示,通过管道将输出从 cflow 命令传递至 pr 命令,并使用 -e 标志压缩制表符扩展以使每个制表符停止位少于八个空格。
注: 要确保 cflow 命令生成的行号与 lex 和 yacc 文件匹配, 必须将 .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 | 发生错误。 |
示例
- 要生成组成程序的这些 C 文件的缺省流程图,请输入:
cflow timeout.c kill.c error.c - 要生成具有单一函数嵌套级别的 cflow 图形,请输入:
cflow -d1 resam.c pptp.c ptpt.c rrr.c whn.c - 要生成 lex 程序的 cflow 图形,请输入:
cflow scan.l - 要生成 yacc 程序的 cflow 图形,请输入:
cflow yaccfile.y - 要生成显示示例 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 命令创建的暂时文件。 |