如何可视化Fortran(90或更高版本)源代码,例如使用Graphviz?

时间:2010-07-01 20:51:34

标签: graph fortran visualization graphviz

我被扔进了一个包含大量源文件的大型Fortran项目。

我需要为这个项目做出贡献,我首先理解这个来源似乎是明智的。

作为第一步,我想想象各种源文件之间的相互依赖性,即哪些源文件需要哪些模块。据我所知,其他语言存在自动化方法,并产生可以使用Graphviz构建的图形。

但有人知道那些可以为Fortran 90代码执行此操作的软件吗?

[搜索Fortran帮助的互联网是一个真正的痛苦,因为你可以通过痛苦无处不在的FORTRAN 77来搜索蜘蛛网。]

3 个答案:

答案 0 :(得分:21)

我建议doxygen,它会自动从源代码生成文档(并且是免费的)。通常,您会在描述函数和变量的注释中添加一些标记。但是,您可以在未记录的源文件上运行doxygen,前提是在配置文件中将EXTRACT_ALL设置为YES,并为所有函数创建创建关系图(即此函数调用这些函数和由其他函数调用。)

您需要安装GraphViz才能生成图表,并在配置文件中将HAVE_DOT选项设置为YES

有关详细信息,请参阅graphs and diagrams的doxygen文档;有关生成的输出示例,请参阅此example class documentation

编辑:当然对于Fortran,您应该在配置文件中将OPTIMIZE_FOR_FORTRAN选项设置为YES

答案 1 :(得分:9)

如果你有钱,那么Understand for Fortran值得一看。如果您没有钱但打算快速工作,那么您可能会试用下载该软件。

对于静态调用图,我从来没有找到像理解那样有用的免费工具;很难找到任何免费工具,更不用说有用工具了。我自己写一个,但市场很小: - (

对于动态调用图,请调查您的编译器选项。我使用英特尔Fortran编译器,它可以生成大量有关正在执行的程序的有用信息。 TotalView调试器还可以显示正在执行的程序的调用图。您还应该查看gprof2dot,它会从GPROF调用“图形”中生成DOT文件。这是免费的,好的。

我还应该补充一点,虽然这不是我曾经使用的东西,Callgrind可能有用。

答案 2 :(得分:2)

您可以在Valgrind内使用callgrind

valgrind --tool=callgrind [your program]

这将生成callgrind.out.[pid]个文件。如果您在没有优化的情况下编译程序,并使用调试标志,那么这种方法效果最佳。

然后您有几个查看数据的选项:

  1. 使用grof2dot将callgrind输出转换为.dot文件,然后使用xdot进行查看,或使用GraphViz将其转换为静态图。
  2. 使用Kcachegrind直接查看(包括来源分析和调用图表)。