首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何可视化包含/指向彼此的C结构图?

如何可视化包含/指向彼此的C结构图?
EN

Stack Overflow用户
提问于 2010-10-13 08:30:50
回答 2查看 5.6K关注 0票数 17

我正在使用Ubuntu10.04,学习内核对象的编程。

我遇到了一些相当复杂的结构,我在阅读上遇到了困难,所以我想我会尝试找到一些工具来帮助我将它们可视化。

到目前为止,我唯一能找到的是VCG,它有一个C结构可视化实例,如下所示:

看上去像是我想用的东西。

第一件事是,为Ubuntu打包的最后一个VCG是vcg (1.30 1.30debian 6) --但是.deb包可以在Ubuntu中下载和安装,没有问题。

然而,这个包似乎只是一个VCG查看器(我猜类似于vcgviewer查看器 )。vcgviewer查看器页面指出:

代码语言:javascript
复制
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脚本,然后允许这样做:

代码语言:javascript
复制
graph-easy test.vcg --as_dot | dot -Tpng -o test.vcg.png 

另请参阅"[图-利息] VCG文件“和"迭戈·诺维洛- Re:找不到VCG浏览器”中的另一个vcg脚本(不幸的是,该脚本对我不起作用)。

EN

回答 2

Stack Overflow用户

发布于 2010-10-13 09:11:29

我在使用强力氧原完成这项任务方面有过很好的经验。它被设计成用带注释的源文件创建文档,但是它已经给了您很多东西,而不需要注释,包括各种图表。dot使用点来创建图形。

票数 6
EN

Stack Overflow用户

发布于 2010-10-13 13:03:16

通过执行以下操作,我成功地构建了一个使用vcg生成的内核模块:

  1. 使用cp -al /usr/src/linux-srcdir /tmp/tmp-srcdir创建内核源代码或头目录的链接副本,因为gcc希望写入当前工作目录。
  2. 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中生成
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3921931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档