codeviz安装记录和使用实例

来源:互联网 发布:招商银行网络金融部 编辑:程序博客网 时间:2024/06/07 08:04

codeviz安装记录和使用实例

1. 简介

codeviz是一个分析c/c++项目函数调用关系的工具,基本思路是给gcc打上补丁,
用这个打了补丁的gcc编译要分析的c/c++项目,编译过程中会把函数调用关系dump成文本文件(.cdepn)。
再用perl脚本(genfull和gengraph)把调用关系文件转成graphviz的dot文件,并用graphviz转成图片。

yum -y install perl graphviz# yum 没有找到包,可以手动安装http://www.graphviz.org/Download.phptar xvf 下载的包名cd 解压后的文件夹./configure && make && sudo make install

2. 安装

2.1 获取源码

  • codeviz最新版1.0.12
# 下面的地址已经失效,可以使用github的地址下载# wget http://www.csn.ul.ie/~mel/projects/codeviz/codeviz-1.0.12.tar.gzhttps://github.com/petersenna/codeviz
  • codeviz-1.0.12匹配的gcc是3.4.6和4.6.2,选择4.6.2
# 使用中科大的GNU镜像服务器 wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-4.6.2/gcc-4.6.2.tar.gz

2.2 编译安装

解压codeviz: tar xzvf codeviz-1.0.12.tar.gz, codeviz官方主页的安装说明

cd codeviz-1.0.12./configure && make && make install

运气好的话,可以一次成功;不过凡人运气有限,尽量不用在小事上。下面说明如何一步一步安装。

2.2.1 编译gcc-4.6.2

# 编译gcc的依赖yum install gmp-devel mpfr-devel libmpc-devel glibc-devel glibc-devel.i686# yum 包找不到,手动安装如下    # gmp-5.0.1        https://gmplib.org/    # mpc-1.0.3        http://www.multiprecision.org/index.php?prog=mpc&page=download    # mpfr-3.1.4        http://www.mpfr.org/# 安装方式都和安装graphviz的一样,tar xxx ; cd xxx; ./configure && make && sudo make install    # 如果codeviz-1.0.12/compilers下没有gcc-4.6.2,安装脚本会从gnu/gcc官网下载,很慢!# 所以要事先从国内服务器下载cp gcc-4.6.2.tar.gz codeviz-1.0.12/compilerscd codeviz-1.0.12/compilers# 先编译,排除错误编译通过后,再make install# 执行下面一句之前,请先按照后面的要求修改install_gcc-4.6.2.sh./install_gcc-4.6.2.sh /usr/local/gcc-graph compile-onlycd gcc-graph/objdirsudo make install

install_gcc-4.6.2.sh默认使能共享库 --enable-shared 并自举编译 make bootstrap

  • 共享库要指明编译参数 -fPIC
  • 自举编译多半不能编译通过,所以要去使能自举编译 --disable-bootstrap
  • 64bit的系统找不到gnu/stub-32.h头文件 --disable-multilib
  • 为了加快编译,可以指明用4个线程编译 make -j 4

根据这四点,给install_gcc-4.6.2.sh打补丁,如下:

diff -pruN install_gcc-4.6.2-old.sh install_gcc-4.6.2.sh--- install_gcc-4.6.2-old.sh+++ install_gcc-4.6.2.sh@@ -32,8 +32,8 @@cd ../objdir# Configure and compile-../gcc-4.6.2/configure --prefix=$INSTALL_PATH --enable-shared --enable-languages=c,c++ || exit-make bootstrap+CFLAGS="-fPIC" ../gcc-4.6.2/configure --prefix=$INSTALL_PATH --disable-bootstrap --enable-shared --enable-languages=c,c++ --disable-multilib || exit+make -j 4RETVAL=$?PLATFORM=i686-pc-linux-gnu

也可以手动修改install_gcc-4.6.2.sh文件,增加CFLAGS=”-fPIC” –disable-bootstrap –disable-multilib

2.2.2 安装codeviz-1.0.12

codeviz绘制调用图用到两个perl脚本genfull和gengraph,其中,genfull依赖于perl-DB_File

yum -y install perl-DB_File// yum 安装找不到的话可以下载 https://github.com/vonway/raw_libary/blob/master/perl-DB_File-1.830-6.el7.x86_64.rpm// 执行rpm -ivh perl-DB_File-1.830-6.el7.x86_64.rpm 进行安装cd codeviz-1.0.12./configuresudo make install-codeviz

3. 使用

3.1 codeviz gcc-4.6.2编译源文件

  • 测试源文件
    #include <stdio.h>    void test1();    void test2();    void test3();    int main()    {        test1();        test2();        return 0;    }    void test1()    {    }    void test2()    {        test2();    }    void test3()    {    }
  • 编译生成cdepn
/usr/local/gcc-graph/bin/gcc -c test.c
  • 生成graph
# 生成fullgraphgenfull -f test.c.cdepn# 生成函数main的graph文件main.psgengraph -f main
  • 打开ps可以看到函数调用图

这里写图片描述

参考链接

http://mstry.github.io/2016/05/15/codeviz-install-and-use/

原创粉丝点击