codeviz安装记录和使用实例

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.php

tar 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.gz
https://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/compilers
cd codeviz-1.0.12/compilers
# 先编译,排除错误编译通过后,再make install
# 执行下面一句之前,请先按照后面的要求修改install_gcc-4.6.2.sh
./install_gcc-4.6.2.sh /usr/local/gcc-graph compile-only
cd gcc-graph/objdir
sudo 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 4

RETVAL=$?
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
./configure
sudo 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
# 生成fullgraph
genfull -f test.c.cdepn
# 生成函数main的graph文件main.ps
gengraph -f main
  • 打开ps可以看到函数调用图

这里写图片描述

参考链接

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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值