51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 9748|回复: 28
打印 上一主题 下一主题

[原创] LR脚本运行中出现内存泄露问题 如何解决

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-2-1 16:55:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用LR录制脚本之后,在脚本中添加如下代码

int index;
int length;
char str[100], *sessionID;
。。。。。
strcpy(str, lr_eval_string("{sID}"));
sessionID = str;
sessionID+=12;
。。。。。
其余的脚本都是LR自动生成的,VUGEN运行无误
但当我用controller按照既定场景对脚本进行运行的时候,发现mmdrv.exe进程所占用的内存不断增加,运行时间过长就会导致内存溢出,controller停止运行

想请教一下各位大侠,这种内存泄露,是不是因为我添加的那部分脚本导致的,如果是的话,如何解决?如果不是的话,应该如何排查导致内存泄露的脚本位置?
望诸位多多指教,感激不尽。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2012-2-1 17:30:38 | 只看该作者
free一下变量
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2012-2-1 17:31:20 | 只看该作者
期待明早能看到各位大侠的回复。。。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2012-2-1 18:10:56 | 只看该作者
云层不是说了吗?你把变量用完后,清零。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2012-2-2 08:44:52 | 只看该作者
首先,我表示,云层的回复,我在自己顶贴的时候还没看到,对此表示歉意
其次,周遭的人都说,不用malloc申请的变量,就不需要用free释放了,所以我不知道,我这样定义的变量到底用不用释放,如果需要释放,直接用free就行么?还望各位高手指点一二。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2012-2-2 09:05:18 | 只看该作者
你直接free sessionID 执行下试试呗。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2012-2-2 09:13:03 | 只看该作者
还有。。。。如何区分到底是脚本造成的内存泄露还是被测系统造成的内存泄露?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2012-2-2 09:20:57 | 只看该作者
我觉得如果被测系统造成的内存泄露的话,可以看服务器的日志,里面会有相关内容的
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2012-2-2 09:51:31 | 只看该作者
回复 8# mvvztt


    请问 服务器的日志怎么看?最好给个例子。。。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2012-2-2 09:52:19 | 只看该作者
我把指针和数组都进行了free操作,可是mmdrv还是在不断的吃掉内存。。。而且脚本在不同的机子上跑过,结果是一样的。。。诶 我无奈了
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2012-2-2 09:53:03 | 只看该作者
回复 2# 云层


谢谢云层的指点。。。   
变量free了,mmdrv还是在不断的涨。。。。另外,我用的是LR11
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2012-2-2 15:04:20 | 只看该作者
回复  mvvztt


    请问 服务器的日志怎么看?最好给个例子。。。
孤单芭蕾lonely 发表于 2012-2-2 09:51



    你用的是什么服务器嘞~~~我用的是tomcat,目录下就有logs目录,可以看的,问你们的开发就知道了,呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2012-2-2 16:23:45 | 只看该作者
回复 12# mvvztt


    谢谢你的回复 初步验证 不是系统内存泄露的问题
诶~纠结中。。。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2012-2-7 14:49:58 | 只看该作者
sessionID+=12;
这是什么意思,sessionID不是指针吗,这样操作也行
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2012-2-8 09:40:23 | 只看该作者
sessionID 写法问题
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2012-2-8 14:30:37 | 只看该作者
回复  mvvztt


    谢谢你的回复 初步验证 不是系统内存泄露的问题
诶~纠结中。。。
孤单芭蕾lonely 发表于 2012-2-2 16:23



    想知道是否是被测系统造成的内存泄露,还有一个办法就是使用内存泄露检测工具,看看这个帖子http://bbs.51testing.com/thread-87138-1-2.html
回复 支持 反对

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 2012-2-9 11:13:05 | 只看该作者
回复 14# sculley


    谢谢sculley的回复
这个操作的目的是移动指针的初始位置,让它指向数组的第13个字符,截取从这个字符还是的数组作为关联时要用到的数据
回复 支持 反对

使用道具 举报

该用户从未签到

18#
 楼主| 发表于 2012-2-9 11:14:00 | 只看该作者
回复 15# 泊涯


    谢谢泊涯的回复
你所谓的写法问题,和sculley是一个意思么?还是其他的什么意思 麻烦解释一下
回复 支持 反对

使用道具 举报

该用户从未签到

19#
 楼主| 发表于 2012-2-9 11:18:27 | 只看该作者
对于sessionID所用到的地方。。。在这里再多附上一段代码 希望可以有助于我所表达的意思:
。。。。。。
        lr_xml_get_values("XML={xml}",
                          "FastQuery=/AMFPacket/AMFHeaders/AMFHeader/string",
                          "ValueParam=sID",
                          LAST);
        strcpy(str, lr_eval_string("{sID}"));
        sessionID = str;
        sessionID+=12;

        flex_amf_call(
                "AMF3_call_1",
                "Gateway=http://192.168.6.125:8080/sbs/messagebroker/amf;jsessionid={sessionID}",
                "Snapshot=t42.inf",
                MESSAGE,
                "Method=null",
                "TargetObjectId=/1",
                BEGIN_ARGUMENTS,
                "<AMF3><object-externalizable-custom><flex.messaging.messages.RemotingMessage>\n "
                " <destination>versionController</destination>\n  <messageId>"
                "DC9C0DBE-9D1C-869C-CE6E-EADC775BB071</messageId>\n  <timestamp>0</timestamp>\n  "
                "<timeToLive>0</timeToLive>\n  <headers>\n    <entry>\n      <string>"
                "DSEndpoint</string>\n      <string>my-amf</string>\n    </entry>\n    <entry>\n "
                "     <string>DSId</string>\n      <string>"
                "{dsID}</string>\n    </entry>\n  </headers>\n  "
                "<operation>getVersion</operation>\n  <parameters/>"
                "\n</flex.messaging.messages.RemotingMessage></object-externalizable-custom>"
                "</AMF3>",
                END_ARGUMENTS,
                LAST);
。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2012-2-9 16:41:36 | 只看该作者
因为是loadrunner11中的flex协议不完善造成的,打上patch1和2解决问题。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-7 05:31 , Processed in 0.075235 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表