Using cflow
The cflow command presents a list of the functions
and function calls within a program. This list can be helpful
when debugging a program, especially if there are external references.
The information displayed by cflow indicates
the source filename and the line number of the function,
and lists additional functions
that are in turn called by that function.
To see a list of the functions
called within testcase.c,
we can run cflow:
cflow testcase.c
1 main: int (), <testcase.c 76>
2 gets: <>
3 GetWords: int (), <testcase.c 43>
4 strlen: <>
5 PrintWords: void (), <testcase.c 21>
6 printf: <>
Output is displayed in the following fields:
line number-
the number of the line in the output
tabs-
the level at which the symbol is defined
symbol name-
the name of the symbol under consideration followed by a colon
symbol information-
the type of the symbol and the arguments to the symbol, if any
location-
the name of the file and the number of the line
within the file in which the symbol is defined
In analyzing the output, we see that
the function main is the first function called by
testcase.c and is defined on line 76 as shown
in the angle brackets (<>).
Notice the function main returns a type int and
it calls the functions gets, GetWords, and
PrintWords. The <>
next to the gets function are empty because
cflow only looks in the source file to resolve
function call references. The gets function is
not in the source code (testcase.c)
and, therefore, cflow
does not have any information on it.
The function main calls two additional functions, GetWords
and PrintWords. Both of these functions are
found in the source file and, therefore, their locations are displayed.
The two additional functions, strlen and printf,
called respectively from GetWords and PrintWords,
do not exist within testcase.c; hence, no line
number information is available for them.
As a result of analyzing testcase.c with cflow,
we now know the names of all of the functions referenced in the source
file and the location of their definitions in the source file.
If we need to change any of them, they should be easy to find.
For a larger more complex program, you
can make decisions on where best to optimize code, either by
reducing the number of function calls or by identifying
obsolete functions and removing them.
For more information on using cflow, see
cflow(CP).
Next topic:
Using cxref
Previous topic:
Using lint
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003