Try the following:
cscope -R -L -2 ".*" | awk -F ' ' '{print $2 "#" $1}' | sort | uniq
- The command
cscope -R -L -2 ".*"
will output functions called by
any function (see explanation of the options below). For each reference found, cscope
outputs a line consisting of the file name, function name, line number, and line text, separated by spaces.
- Use
awk
to extract the function name $2
and file name $1
separated by #
. Change $2
, $1
and the separator #
if you need other output fields or separator.
- Sort the output with
sort
.
- Get unique items with
uniq
.
cscope
options (see http://cscope.sourceforge.net/cscope_man_page.html):
-R
Recurse subdirectories for source files.
-L
Do a single search with line-oriented output when used with the
-num pattern option.
-2 ".*"
Go to input field num (here 0-based field 2) and find
pattern (here .*
for all). You can see the input fields in cscope's screen mode. This may vary depending on the version you are using. The fields for version 15.8a under debian are:
- 0: Find this C symbol:
- 1: Find this global definition:
- 2: Find functions called by this function:
- 3: Find functions calling this function:
- 4: Find this text string:
- 5: Change this text string:
- 6: Find this egrep pattern:
- 7: Find this file:
- 8: Find files #including this file:
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…