【发布时间】:2011-04-24 17:30:56
【问题描述】:
我正在使用 Ubuntu 10.04,并且正在学习内核对象的编程。
我遇到了一些我难以阅读的相当复杂的结构,所以我想我会尝试找到一些可以帮助我将它们可视化的工具。
目前我能找到的只有VCG,它有一个C Struct Visualization Example,看起来像这样:
这看起来像是我想使用的东西。
首先,为 Ubuntu 打包的最后一个 VCG 是 vcg (1.30debian-6) in hardy - 但是可以在 Ubuntu Lucid 中下载和安装 .deb 包没有问题。
但是,这个包似乎只是一个 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 代替进行可视化。对我有用的是将graph-easy - search.cpan.org 用于perl - 它首先被打包在 Ubuntu 的 Maverick 版本中,如 libgraph-easy-perl (但是,.deb 文件可以 - 再次 - 下载和安装没有问题清醒)。 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-to-dot 脚本(很遗憾,它对我不起作用)。
【问题讨论】:
标签: c linux struct visualization