我正在使用Ubuntu 10.04,并正在研究内核对象的编程。
我遇到了一些相当复杂的结构,难以阅读,因此我认为我将尝试找到一些可以使它们可视化的工具。
到目前为止,我唯一能找到的就是VCG,它具有一个C Struct Visualization Example,看起来像这样:
看起来像我想使用的东西。
第一件事是,最后一个为Ubuntu打包的VCG是vcg (1.30debian-6) in hardy-但是.deb包可以下载并安装在Ubuntu Lucid中而没有问题。
但是,似乎此软件包只是一个VCG查看器(我想类似于vcgviewer)。 vcgviewer页面说明:
To generate compiler graph data with newest gcc compilers use:
gcc -g -da -dv -fdump-tree-original-raw -fdump-tree-all-all
因此,显然我在编译时必须将这些开关与
gcc
一起使用,才能从C源代码生成.vcg图形文件。但是,问题在于我正在构建一个内核模块,该模块仅引用Linux头文件-因为我尽量避免重新编译整个内核。似乎,一旦我尝试在该上下文(内核模块)中使用
-fdump-tree-...
开关,gcc
也想开始编译内核的其余部分! (并且显然在.vcg图的编译和生成中均失败-因为我没有内核源,只有 header )所以我的问题是-是否有一个工具可以生成.vcg或.dot结构图-仅使用纯文本头文件作为输入? (它不必解析所有依赖关系,只需解析相同目录的头文件中的依赖关系)
编辑:后端特别是.vcg或.dot实际上对我来说并不那么重要,我之所以提到它们只是因为到目前为止我已经找到它们;欢迎使用任何可允许类似结构可视化的软件,无论后端如何:)
PS:请注意,如果您不想使用VCG查看器来查看.vcg图形,则可以将.vcg格式转换为.dot格式,而可以使用
graphviz
进行可视化。对我有用的是使用graph-easy - search.cpan.org作为perl
-最初是在Maverick版的Ubuntu中打包为libgraph-easy-perl(但是,可以再次下载并安装.deb文件,而在Lucid中没有问题)。 libgraph-easy-perl
安装graph-easy
脚本,然后允许执行以下操作:graph-easy test.vcg --as_dot | dot -Tpng -o test.vcg.png
另请参阅“[graphviz-interest] VCG files”和“Diego Novillo - Re: can't find VCG viewer”以获取另一个vcg点对点脚本(不幸的是,该脚本不适用于我)。
最佳答案
我在将doxygen用于该任务方面有很好的经验。它旨在从带注释的源文件中创建文档,但是它已经可以为您提供很多没有注释的内容,包括各种图形。
Doxygen使用点来创建图形。