我正在使用Ubuntu10.04,学习内核对象的编程。
我遇到了一些相当复杂的结构,我在阅读上遇到了困难,所以我想我会尝试找到一些工具来帮助我将它们可视化。
到目前为止,我唯一能找到的是VCG,它有一个C结构可视化实例,如下所示:

看上去像是我想用的东西。
第一件事是,为Ubuntu打包的最后一个VCG是vcg (1.30 1.30debian 6) --但是.deb包可以在Ubuntu中下载和安装,没有问题。
然而,这个包似乎只是一个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 for perl --它最初是在Ubuntu中与Maverick版本一起打包的,作为libgraph-easy-perl (不过,.deb文件也可以--再次--可以被下载和安装,不会出现任何问题)。libgraph-easy-perl安装一个graph-easy脚本,然后允许这样做:
graph-easy test.vcg --as_dot | dot -Tpng -o test.vcg.png 另请参阅"[图-利息] VCG文件“和"迭戈·诺维洛- Re:找不到VCG浏览器”中的另一个vcg脚本(不幸的是,该脚本对我不起作用)。
发布于 2010-10-13 09:11:29
我在使用强力氧原完成这项任务方面有过很好的经验。它被设计成用带注释的源文件创建文档,但是它已经给了您很多东西,而不需要注释,包括各种图表。dot使用点来创建图形。
发布于 2010-10-13 13:03:16
通过执行以下操作,我成功地构建了一个使用vcg生成的内核模块:
cp -al /usr/src/linux-srcdir /tmp/tmp-srcdir创建内核源代码或头目录的链接副本,因为gcc希望写入当前工作目录。EXTRA_CFLAGS="-g -da -dv -fdump-tree-original-raw -fdump-tree-all-all"添加到make命令行例如。-C /tmp/tmp-srcdir M=pwdEXTRA_CFLAGS="-g -da -dv -fdump-tree-original-raw -fdump-tree-all-all".vcg文件在/tmp/tmp-srcdir中生成https://stackoverflow.com/questions/3921931
复制相似问题