我正在使用Ubuntu 10.04,并研究内核对象的编程.
我遇到了一些相当复杂的结构,我很难阅读,所以我想我会尝试找一些可以帮助我想象它们的工具.
到目前为止我唯一能找到的是VCG,它有一个C Struct Visualization Example,如下所示:
这看起来像我想要使用的东西.
第一件事是,为Ubuntu打包的最后一个VCG是耐用的vcg(1.30debian-6) - 但.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图的编译和生成中显然都失败了 - 因为我没有内核源代码,只有头文件)
所以我的问题是 - 是否有一个工具,可以生成.vcg或.dot结构图 - 只需使用纯文本头文件作为输入?(它不必解析所有依赖项 - 只是在同一目录中的头文件中)
编辑:对我来说,后端特别是.vcg或.dot对我来说实际上并不重要,我提到它们只是因为到目前为止我找到了它们; 任何类型的软件,允许类似的结构可视化,无论后端,欢迎:)
PS:请注意,如果您不想使用VCG查看器查看.vcg图表,则可以将.vcg格式转换为.dot格式,graphviz
而是使用可视化.什么工作对我来说是使用图形易- search.cpan.org的perl
-这第一次拿到打包在Ubuntu与小牛版,作为libgraph易-perl的(然而,的.deb文件可以-再-下载并安装不Lucid的问题).libgraph-easy-perl
安装一个graph-easy
脚本,然后允许执行以下操作:
graph-easy test.vcg --as_dot | dot -Tpng -o test.vcg.png
另请参阅" [graphviz-interest] VCG文件 "和" Diego Novillo - Re:找不到VCG查看器 "的另一个vcg-to-dot脚本(不幸的是,这对我来说不起作用).
我有使用doxygen完成该任务的良好经验.它旨在从带注释的源文件中创建文档,但它可以在没有注释的情况下为您提供很多内容,包括各种图形.Doxygen使用点来创建图表.