linux 跟踪程序执行过程,用pvtrace和Graphviz实现对linux下C程序的函数调用跟踪

用pvtrace和Graphviz实现对linux下C程序的函数调用跟踪

用pvtrace和Graphviz实现对linux下C程序的函数调用跟踪

1:功能介绍,使用本方法可以实现linux下C应用程序的调用跟踪。对于了解大型的程序的运行过程,和函数的调用情况分析很有帮助。

2:用到的开源软件的安装

2.1 pvtrace

如果你的linux不支持解压*.zip最好在windows下解压后copy到linux下。

解压后有以下几个文件

a4c26d1e5885305701be709a3d33442f.png

在linux上安装pvtrace

需要root权限

$ make

$ make install

2.2 Graphviz

Graphviz也是一个开源项目,可以将pvtrace生成的*.dot文件转成图片格式便于查看。Graphviz的下载地址http://www.graphviz.org/Download..php

有针对多种操作系统的,我们这里用windows版安装简单且方便使用

安装后有以下工具:

a4c26d1e5885305701be709a3d33442f.png

3:对要跟踪工程的修改

3.1我们先用一个小程序学习一下使用过程。

首先:先写一个小的test.c

void aa(int i)

{

printf("%d\n",i);

}

int main()

{

printf("hellow

world\n");

aa(10);

printf("test\n");

return;

}

然后将instrument.c考到与test.c相同的目录

$ lsinstrument.c

test.c

执行:

$ gcc -g

-finstrument-functions test.c instrument.c -o test再:$

./test可以看到多了一个trace.txt$ lsinstrument.c test.ctest trace.txt然后再:$

pvtrace test得到 graph.dot$ lsgraph.dot test trace.txtinstrument.c

test.c将graph.dot拷贝到widows下运行graphviz的dot模式(我们在2.2安装的)将它转化成图像。

a4c26d1e5885305701be709a3d33442f.png

输出的test.jpg

a4c26d1e5885305701be709a3d33442f.png

3.2

以capwap的跟踪为例

我们在这里以开源的capwap为例

首先将instrument.c拷贝到capwap所在的目录

$ ls

……………………………….

instrument.c

……………………………….

$ vim Makefile

其次,在Makefile里添加(红色字为注释)

DEBUG = 1

这主要是为了调试方便,如果不需要跟踪就把DEBUG指设成0 可以放在Makefile的第一行。

ifeq ($(DEBUG),1)

CFLAGS += -g

-finstrument-functions

AC_OBJS +=

instrument.o

WTP_OBJS +=

instrument.o

endif

放在 CFLAGS AC_OBJS

WTP_OBJS 定义之后

CFLAGS += -g

-finstrument-functions 是在编译选项中加入调试信息。是必须的。

AC_OBJS +=

instrument.o

WTP_OBJS +=

instrument.o

这两项是将instrument.c

与程序一起编译了

然后

$ make

$ ./AC

会生成trace.txt

$ qvtrace AC

会生成 graph.dot

然后同test一样,用graphviz转成图像格式。如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值