Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

CFLOW(1)

НАЗВАНИЕ
cflow - построение графа вызовов C-программ

СИНТАКСИС


  cflow  [-r] [-ix] [-i_] [-dчисло] файл ...

ОПИСАНИЕ
Команда cflow анализирует набор C-, YACC-, LEX-, а также ассемблерных и об ектных файлов и пытается построить граф внешних ссылок. Файлы с расширениями .y (для YACC), .l (для LEX), .c (для C) и .i (для промежуточного кода) соответствующим образом препроцессируются (файлы .i игнорируются), а затем подвергаются первому проходу программы lint(1). (Допускается использование опций -I, -D и -U препроцессора C.) Файлы с расширением .s ассемблируются, и информация извлекается (как и в случае .o-файлов) из таблицы имен. Результат всей этой нетривиальной обработки накапливается и преобразуется в граф внешних ссылок, который направляется на стандартный вывод.

Строки выходной информации пронумерованы, начиная с 1. За номером следует несколько символов табуляции, указывающих уровень вложенности. Затем идет имя глобального об екта (обычно выдаются только функции, не определенные как внешние, и с именами, не начинающимися с подчеркивания; см. ниже описание опции включения -i), двоеточие и определение глобального об екта. Если определение извлечено из C-текста, оно состоит из описания типа (например, char *), а также из заключенных в угловые скобки имени исходного файла и номера строки, в которой найдено данное определение. В определениях, взятых из об ектных файлов, информативным является только имя файла. Начальные подчеркивания из C-подобных внешних имен удаляются.

После того, как определение имени напечатано, ссылки на него содержат только номер соответствующей выходной строки. Для неопределенных ссылок печатается <>.

В качестве примера рассмотрим следующий файл f1.c:


   int  i;



   main()

   {

      f();

      g();

      f();

   }



   f()

   {

      i = h();

   }

Команда

   cflow  -ix f1.c

сформирует результат:

   1       main: int(), <file.c 4>

   2               f: int(), <file.c 11>

   3                       h: <>

   4                       i: int, <file.c 1>

   5               g: <>

Если уровень вложенности слишком большой, можно использовать опцию -e команды pr(1), чтобы табуляция вызывала сдвиг менее чем на восемь позиций.

В дополнение к опциям -D, -I и -U, которые интерпретируются так же, как в командах cc(1) и cpp(1), команда cflow имеет следующие опции:
-rЗаменить отношение "вызывающий-вызываемый" на обратное, чтобы получить инвертированный граф, показывающий, кто вызывает каждую из функций. Вызываемые функции упорядочиваются по алфавиту.
-ixУчитывать внешние и статические ссылки на данные. По умолчанию в граф вызовов включаются только функции.
-i_Учитывать имена, начинающиеся с подчеркивания. По умолчанию такие функции (и данные, если используется опция -ix) в граф не включаются.
-dчисло Отсекать граф вызовов на уровне, который определяется целым десятичным числом. По умолчанию это очень большое число. Уровень отсечения может быть только положительным.

СМ. ТАКЖЕ
as(1), cc(1), lex(1), lint(1), nm(1), pr(1), yacc(1).

ДИАГНОСТИКА
Команда сообщает о некорректных опциях и о множественных определениях, из которых учитывается только первое. Другие сообщения могут исходить от различных используемых программ (например от C-препроцессора).

СЮРПРИЗЫ
В файлах, сформированных программами lex(1) и yacc(1), используются операторы изменения нумерации строк, что может ввести в заблуждение cflow. Чтобы получить правильный результат, натравите cflow на входные файлы yacc'а или lex'а.

Если нет опции -i_, но есть имена, начинающиеся с подчеркивания, результат может получиться неверным.

При наличии косвенной рекурсии программа cflow работает неправильно, если только не указана опция -r. даленным компьютерам.

СМ. ТАКЖЕ
chroot(2).

ДИАГНОСТИКА
При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...