幻灯片 9
•
08年的时候,客户发现tuxedo服务,在运行一段时间后,经常出现内存耗尽的情况。同时客户购买了IBM得purify.所以就帮组客户使用purify测试tuxedo服务。说句实话,purify测试tuxedo服务确实不是很理想,从测试结果的数据上看,居然说tuxedo本身有内存泄漏问题。tuxedo老版本是这个问题的,但是新版本以及补丁都修正了这些问题。咨询Bea和IBM得人都说不知道。那我也只能不知道了。
不过还是有一定作用的。下面就详细介绍下测试的过程:
幻灯片 6
•
幻灯片 6
•第一步:创建Purify相关的Makefile文件
使用CC(GCC)代替buildserver命令
purify -log-file=/tux2/boss15/bss/MemLeak.log -view-file=/tux2/boss15/bss/MemLeak.pv cc -xarch=v9 -w -I$TUXDIR/include -o MemoryLeak BS-5120.c -L${TUXDIR}/lib MemoryLeak.c /tux2/tux3/boss15/bss/src/makefile/test/public.c -ltux -lbuft -lfml -lfml32 -lengine -R/usr/lib/lwp -lpthread -lposix4 -lsocket -lnsl
幻灯片 6
注意:
1.需要打开调试标识即-g,才能定位到具体内存泄漏的位置,否则purify不能显示源程序.
2.将Purify加入到环境变量PATH中
幻灯片 7
•第二步:运行Makfile文件,使得在服务中插入purify的内存检查代码
•第三步:启动Tuxedo服务,tmboot –s XXXX
幻灯片 8
•第四步:调用客户端程序,请求Tuxedo服务
•第五步:停止Tuxedo服务,
tmshutdown –s XXXX
幻灯片 9
•第六步:取得结果 XXX.log,进行分析
Memory leaked(MLK):内存泄漏
下列情况可引起内存的不可读或不可写:
Array Bounds Read (ABR):数组越界。
Beyond Stack Read (BSR):堆栈越界。
Free Memory Read (FMR):空闲内存阅读。
Invalid Pointer Read (IPR):非法指针阅读。
Null Pointer Read (NPR):空指针阅读。
Uninitialized Memory Read (UMR):未初始化内存阅读。
总结:需要知道tuxedo如何集成cc编译器的。
幻灯片 17
•使用Purify最关键的是修改Makefile文件
•-g选项的重要性
•如果快速的分析报告
阅读(967) | 评论(0) | 转发(0) |