CodeViz源代码中函数调用关系的调用图生成工具
2009-07-09 19:44
281 查看
1. 安装 GraphViz
用新立得软件管理器
2. 安装CodeViz
tar zxvf codeviz-1.0.11.tar.gz
2.1安装带patch的gcc:
下载gcc-3.4.6.tar.gz
mv gcc-3.4.6.tar.gz codeviz-1.0.11/compilers
cd codeviz-1.0.11/compilers
sudo ./install_gcc-3.4.6.sh /usr/local/gcc-graph
2.2 安装 CodeViz
./configure --gccgraph=/usr/local/gcc-graph
make install-codeviz
3. 使用
#include <stdio.h>
void test(void);
int
main(void)
{
test();
return 0;
}
void test()
{
return;
}
$/usr/local/gcc-graph/bin/gcc test.c
$genfull test.c.cdepn
$gengraph –output-type “png” -f main
skill:
--output-type,指定输出类型,例如png、gif、html和ps,缺省为ps。
解决函数名字冲突:分析哪些目录
使用genfull的-s选项,-s指定了检测哪些子目录。例如kernel中在
mm目录和drivers/char/drm目录下都定义了alloc_pages函数,那么可以以下列方式调用
genfull:
genfull -s "mm include/linux drivers/block arch/i386"
使用 Daemon/Client 模式:
当full.graph很大时,大量的时间花费到读取输入文件上了,例如kernel的
full.graph是很大的,前面生成的大约有15M,这还不是全部内核的函数调用分析信息。
为了节省时间,可以将gengraph以daemon方式运行,这要使用-p选项:
gengraph -p -g linux-2.6.25/full.graph
该命令返回时gengraph以daemon方式运行,同时在/tmp目录下生成了codeviz.pipe文件。
要生成函数调用图,可以使用-q选项:
gengraph -q -t -d 2 -f alloc_pages
要终止gengraph的运行,使用如下命令:
echo QUIT > /tmp/codeviz.pipe
一个例子:
现在我们来看如何生成内核的函数调用图,以2.6.25中alloc_pages函数为例。
首先是编译内核,这里我们的目的是查看函数调用关系,并非安装新内核,所以直接
进行配置编译:
make menuconfig
make CC=/usr/local/gcc-graph/bin/gcc bzImage
make CC=/usr/local/gcc-graph/bin/gcc modules
生成调用图:
genfull -s "mm include/linux drivers/block arch/i386 fs init lib kernel net ipc"
这里使用了-s选项,虽然仍然会产生冲突,但是对于kernel的基本部分来说多数还是没
有冲突的。这里的选择也是为了自己将来分析kernel用,你可以根据自己的需要来生成
full.graph。
生成了full.graph后调用gengraph生成alloc_pages的函数调用图,这里我们先直
接使用项目网站上使用的命令,然后再进行解释:
gengraph -f alloc_pages -d 5
-t -s "buffered_rmqueue out_of_memory try_to_free_pages numa_node_id"
-i "cpuset_zone_allowed"
--output-font "Arial" –output-type "png"
选项:
-d 指定最大调用层数
-s 仅仅显示指定函数,而不对其调用进行展开
-i 忽略指定函数
gengraph -f alloc_pages -d 3 -t --output-font="Arial" --output-type="png"
用新立得软件管理器
2. 安装CodeViz
tar zxvf codeviz-1.0.11.tar.gz
2.1安装带patch的gcc:
下载gcc-3.4.6.tar.gz
mv gcc-3.4.6.tar.gz codeviz-1.0.11/compilers
cd codeviz-1.0.11/compilers
sudo ./install_gcc-3.4.6.sh /usr/local/gcc-graph
2.2 安装 CodeViz
./configure --gccgraph=/usr/local/gcc-graph
make install-codeviz
3. 使用
#include <stdio.h>
void test(void);
int
main(void)
{
test();
return 0;
}
void test()
{
return;
}
$/usr/local/gcc-graph/bin/gcc test.c
$genfull test.c.cdepn
$gengraph –output-type “png” -f main
skill:
--output-type,指定输出类型,例如png、gif、html和ps,缺省为ps。
解决函数名字冲突:分析哪些目录
使用genfull的-s选项,-s指定了检测哪些子目录。例如kernel中在
mm目录和drivers/char/drm目录下都定义了alloc_pages函数,那么可以以下列方式调用
genfull:
genfull -s "mm include/linux drivers/block arch/i386"
使用 Daemon/Client 模式:
当full.graph很大时,大量的时间花费到读取输入文件上了,例如kernel的
full.graph是很大的,前面生成的大约有15M,这还不是全部内核的函数调用分析信息。
为了节省时间,可以将gengraph以daemon方式运行,这要使用-p选项:
gengraph -p -g linux-2.6.25/full.graph
该命令返回时gengraph以daemon方式运行,同时在/tmp目录下生成了codeviz.pipe文件。
要生成函数调用图,可以使用-q选项:
gengraph -q -t -d 2 -f alloc_pages
要终止gengraph的运行,使用如下命令:
echo QUIT > /tmp/codeviz.pipe
一个例子:
现在我们来看如何生成内核的函数调用图,以2.6.25中alloc_pages函数为例。
首先是编译内核,这里我们的目的是查看函数调用关系,并非安装新内核,所以直接
进行配置编译:
make menuconfig
make CC=/usr/local/gcc-graph/bin/gcc bzImage
make CC=/usr/local/gcc-graph/bin/gcc modules
生成调用图:
genfull -s "mm include/linux drivers/block arch/i386 fs init lib kernel net ipc"
这里使用了-s选项,虽然仍然会产生冲突,但是对于kernel的基本部分来说多数还是没
有冲突的。这里的选择也是为了自己将来分析kernel用,你可以根据自己的需要来生成
full.graph。
生成了full.graph后调用gengraph生成alloc_pages的函数调用图,这里我们先直
接使用项目网站上使用的命令,然后再进行解释:
gengraph -f alloc_pages -d 5
-t -s "buffered_rmqueue out_of_memory try_to_free_pages numa_node_id"
-i "cpuset_zone_allowed"
--output-font "Arial" –output-type "png"
选项:
-d 指定最大调用层数
-s 仅仅显示指定函数,而不对其调用进行展开
-i 忽略指定函数
gengraph -f alloc_pages -d 3 -t --output-font="Arial" --output-type="png"
相关文章推荐
- CodeViz —— 一款分析 C/C++源代码中函数调用关系的调用图生成工具
- 【转载】VS工具使用——代码生成函数关系图
- 各类分析函数调用关系图的工具
- 用cflow工具生成代码函数调用关系【转】
- Windows平台下Doxygen+GraphViz+HtmlHelp自动生成函数调用关系图
- 各类分析函数调用关系图的工具
- 各类分析函数调用关系图的工具
- C#工具---使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明
- 用callgraph生成的两张函数调用关系图
- 【转】各类分析函数调用关系图的工具
- 用cflow工具生成代码函数调用关系
- 用CodeViz 生成函数关系调用图
- 各类分析函数调用关系图的工具
- VS工具使用——代码生成函数关系图
- 用cflow工具生成代码函数调用关系
- 函数调用树生成工具calltree-2.3 使用小记。
- Windows平台下Doxygen+GraphViz+HtmlHelp自动生成函数调用关系图
- 各类分析函数调用关系图的工具
- 各类分析函数调用关系图的工具
- 各类分析函数调用关系图的工具