EricFisher 发表于 2010-04-10 16:35

view_tree

gcc-vcg-plugin现在基本可以用来查看一个tree的结构了。
下面展示了一个简单的函数在gcc中的tree的结构:
$ cat ~/temp/plus.c
int
add (int a, int b)
{
return a + b;
}

$ gdb -q -args ~/install/plugin/libexec/gcc/i686-pc-linux-gnu/4.5.0/cc1 plus.c -fplugin=~/install/general/lib/gcc-vcg-plugin/vcg.so

Breakpoint 1, c_genericize (fndecl=0xb7f21e00) at ../../plugin/gcc/c-gimplify.c:79
79        {
(gdb) view_tree fndecl

图形如下(注:由于图形太大,这里没有完全展开):

EricFisher 发表于 2010-04-14 09:59

gcc-vcg-plugin的实现目的

作为gcc的第三方插件,图形化显示gcc内部的数据结构,方便调试和查看gcc代码。

1. 可以在gdb中调试gcc时,图形化显示gcc内部的数据结构
2. 也可以在使用gcc编译程序的时候,转储图形化的描述文件

目前使用vcg格式来描述图形文件。

现在,你可以用它来

1. 查看一个函数的cfg,从而知道一个pass之后,优化对函数都做了哪些转换
2. 查看一个tree,了解gcc的tree结构

gcc-vcg-plugin的实现方法

1. 使用gcc的插件功能,编写一个动态链接库。
2. 针对gcc的内部数据结构,编写相应的转换函数,输出vcg文件。
3. 提供封装函数,用来调用vcgview来图形化显示vcg文件,在gdb中使用。

EricFisher 发表于 2010-04-21 13:20

我把这个项目单独放在 http://code.google.com/p/gcc-vcg-plugin/ 上了,如果有感兴趣,想参加的,可以跟我联系。

另外,http://code.google.com/p/gccint-zh 这个项目还一直没有了结,有人感兴趣的话,也可以跟我联系。
页: [1]
查看完整版本: view_tree