Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何可视化Fortran(90或更高版本)源代码,例如使用Graphviz?_Graph_Fortran_Visualization_Graphviz - Fatal编程技术网

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

如何可视化Fortran(90或更高版本)源代码,例如使用Graphviz?,graph,fortran,visualization,graphviz,Graph,Fortran,Visualization,Graphviz,我参与了一个大型Fortran项目,其中包含大量源文件 我需要为这个项目作出贡献,而且我首先了解来源似乎是明智的 作为第一步,我想可视化各种源文件之间的相互依赖关系,即哪些源文件需要哪些模块。据我所知,其他语言都有自动方法,可以使用Graphviz生成图形 但是有人知道有什么软件可以为Fortran 90代码实现这一点吗 [由于到处都是令人痛苦的Fortran 77,搜索Internet以获取Fortran帮助是一件非常痛苦的事情,因为你最终会搜索Internet蜘蛛网。]如果你有钱的话,那就值

我参与了一个大型Fortran项目,其中包含大量源文件

我需要为这个项目作出贡献,而且我首先了解来源似乎是明智的

作为第一步,我想可视化各种源文件之间的相互依赖关系,即哪些源文件需要哪些模块。据我所知,其他语言都有自动方法,可以使用Graphviz生成图形

但是有人知道有什么软件可以为Fortran 90代码实现这一点吗

[由于到处都是令人痛苦的Fortran 77,搜索Internet以获取Fortran帮助是一件非常痛苦的事情,因为你最终会搜索Internet蜘蛛网。]

如果你有钱的话,那就值得一看。如果你没有钱,但打算快速工作,那么你可以试着下载该软件

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

对于动态调用图,请调查您的编译器选项。我使用“英特尔Fortran编译器”,它可以生成大量有关正在执行的程序的有用信息。TotalView调试器还可以可视化正在执行的程序的调用图。您还应查看是什么将GPROF调用“图”生成点文件。这是免费的好的

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

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

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

有关更多信息,请参阅doxygen文档,这是生成的输出示例


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

您可以在以下范围内使用
callgrind

这将生成一个
callgrind.out.[pid]
文件。如果编译程序时没有优化,并且带有调试标志,则效果最佳

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

  • 使用将callgrind输出转换为.dot文件,然后使用查看,或者使用GraphViz将其转换为静态图形
  • 使用(包括源代码分析和调用图)直接查看

  • 谢谢你的回复。是的,对Fortran的理解似乎是一个不错的选择。这个方法对我来说很有效,它使用了可用的Ubuntu包,用于
    doxygen
    graphviz
    。克里斯提到的选项可以在
    Doxyfile
    配置文件中找到。在
    doxyg中还有一个
    doxywizard
    程序en ui
    使事情变得非常简单的软件包我尝试了doxygen和Understand,我必须说doxygen的工作非常出色。在我使用的配置文件中:HAVE_DOT=YES,CALL_GRAPH=YES,CALLER_GRAPH=YES,最后提取_ALL=YES以包含子目录中的所有Fortran文件。@noot101这是
    doxygen gui
    not
    doxygen用户界面
    ,至少在现代ubuntu发行版上,对于刚接触doxygen的读者来说:这里有一个关于Chris解决方案的简要描述。可能是从这里复制的-不确定。
    valgrind --tool=callgrind [your program]