Cflow(1)
Команда cflow(1) выдает граф внешних ссылок для C-, YACC-, LEX-, а также ассемблерных и объектных файлов. Используя файлы нашего примера, с помощью команды
cflow restate.c oppty.c pft.c rfe.c
можно получить следующий результат:
1 main: int(), <restate.c 12> 2 fprintf: <> 3 exit: <> 4 getopt: <> 5 fopen: <> 6 fscanf: <> 7 printf: <> 8 oppty: float(), <oppty.c 7> 9 pft: float(), <pft.c 7> 10 rfe: float(), <rfe.c 7>
Та же команда с опцией -r заменяет отношение "вызывающий-вызываемый" на обратное. Результат выполнения команды:
1 exit: <> 2 main : <> 3 fopen: <> 4 main : 2 5 fprintf: <> 6 main : 2 7 fscanf: <> 8 main : 2 9 getopt: <> 10 main : 2 11 main: int(), <restate.c 12> 12 oppty: float(), <oppty.c 7> 13 main : 2 14 pft: float(), <pft.c 7> 15 main : 2 16 printf: <> 17 main : 2 18 rfe: float(), <rfe.c 7> 19 main : 2
Команда cflow с опцией -ix включает в результат ссылки на внешние и статические данные. В нашем примере есть только одна такая ссылка - opterr. Результат:
1 main: int(), <restate.c 12> 2 fprintf: <> 3 exit: <> 4 opterr: <> 5 getopt: <> 6 fopen: <> 7 fscanf: <> 8 printf: <> 9 oppty: float(), <oppty.c 7> 10 pft: float(), <pft.c 7> 11 rfe: float(), <rfe.c 7>
Если указать и опцию -r, и опцию -ix, результат будет следующим:
1 exit: <> 2 main : <> 3 fopen: <> 4 main : 2 5 fprintf: <> 6 main : 2 7 fscanf: <> 8 main : 2 9 getopt: <> 10 main : 2 11 main: int(), <restate.c 12> 12 oppty: float(), <oppty.c 7> 13 main : 2 14 opterr: <> 15 main : 2 16 pft: float(), <pft.c 7> 17 main : 2 18 printf: <> 19 main : 2 20 rfe: float(), <rfe.c 7> 21 main : 2