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
图形如下(注:由于图形太大,这里没有完全展开):
下面展示了一个简单的函数在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
图形如下(注:由于图形太大,这里没有完全展开):
plus.jpeg (101.25 KB, 下载次数: 2)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我把这个项目单独放在 http://code.google.com/p/gcc-vcg-plugin/ 上了,如果有感兴趣,想参加的,可以跟我联系。
另外,http://code.google.com/p/gccint-zh 这个项目还一直没有了结,有人感兴趣的话,也可以跟我联系。
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中使用。