Как я могу визуализировать исходный код на Fortran (90 или более поздней версии), например, используя Graphviz? - PullRequest
15 голосов
/ 02 июля 2010

Меня бросили в большой проект на Фортране с большим количеством исходных файлов.

Мне нужно внести свой вклад в этот проект, и было бы разумно сначала понять источник.

В качестве первого шага я хотел бы визуализировать взаимозависимости между различными исходными файлами, то есть каким исходным файлам нужны какие модули.Насколько я могу судить, автоматизированные методы существуют для других языков и приводят к графу, который может быть построен с использованием Graphviz.

Но кто-нибудь знает о программном обеспечении, которое может сделать это для кода Fortran 90?

[Поиск в Интернете для помощи по Фортрану - настоящая боль, так как вы в конечном итоге ищете межполотки благодаря мучительно вездесущему Фортрану 77.]

Ответы [ 3 ]

21 голосов
/ 17 января 2012

Я бы порекомендовал doxygen , который автоматически генерирует документацию из исходного кода (и является бесплатным). Обычно вы добавляете в комментарии некоторую разметку, описывающую ваши функции и переменные. Однако вы можете просто запустить doxygen для недокументированных исходных файлов, при условии, что вы установили EXTRACT_ALL в YES в файле конфигурации и позволили ему создать диаграммы отношений для всех ваших функций (т.е. эта функция вызывает эти функции и вызывается другие функции).

Вам необходим установленный GraphViz для генерации диаграмм, а для параметра HAVE_DOT в файле конфигурации установлено значение YES.

См. Документацию по doxygen для графиков и диаграмм для получения дополнительной информации, а также пример документации класса для примера сгенерированного вывода.

Редактировать : Конечно, для Фортрана вы должны установить опцию OPTIMIZE_FOR_FORTRAN на YES в файле конфигурации.

9 голосов
/ 02 июля 2010

Если у вас есть деньги, то Понимание Фортрана стоит посмотреть.Если у вас нет денег, но вы хотите работать быстро, вы можете обойтись пробной загрузкой программного обеспечения.

Для статического графика вызовов я никогда не находил бесплатный инструмент, столь же полезный, как Понимание;Трудно найти какие-либо бесплатные инструменты, не говоря уже о полезных.Я написал бы сам, но рынок был бы крошечным: - (

Для динамического графа вызовов изучите параметры вашего компилятора. Я использую Intel Fortran Compiler, который может генерировать кучу полезной информации об исполняемой программе.Отладчик TotalView также может визуализировать граф вызовов исполняемой программы. Вы также должны взглянуть на gprof2dot , который делает DOT-файл из графа вызова GPROF. Это бесплатно и хорошо.

И я должен также добавить, хотя это не то, что я когда-либо использовал, что Callgrind может быть полезным.

2 голосов
/ 06 июня 2015

Вы можете использовать callgrind из Valgrind :

valgrind --tool=callgrind [your program]

Будет создан файл callgrind.out.[pid]. Это работает лучше всего, если вы компилируете свою программу без оптимизаций и с флагами отладки.

У вас есть несколько вариантов просмотра данных:

  1. Преобразуйте выходные данные callgrind в файл .dot с помощью grof2dot , а затем просмотрите его с помощью xdot или преобразуйте в статический график с помощью GraphViz.
  2. Просмотр его напрямую с помощью Kcachegrind (включает анализ источников и графики вызовов).
...