loadrunner:Error -- memory violation : Exception ACCESS_VIOLATION received的解决办法_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2803 | 回复: 0   主题: loadrunner:Error -- memory violation : Exception ACCESS_VIOLATION received的解决办法        下一篇 
    本主题由 koei123 于 2015-2-6 4:58:23 移动
shylone
注册用户
等级:下士
经验:199
发帖:90
精华:0
注册:2011-11-24
状态:离线
发送短消息息给shylone 加好友    发送短消息息给shylone 发消息
发表于: IP:您无权察看 2015-1-4 10:53:49 | [全部帖] [楼主帖] 楼主

执行压力测试,脚本回放没有问题,但在场景中就报错:

“Action.c(55): Error: C interpreter run time error: Action.c (55):  Error -- memory violation : Exception ACCESS_VIOLATION received.”


查找parameter list中参数设置,发现总是出现一些参数文件读取方式自动改变,由之前的“same line as xxxx”变为“sequential”,一直在修改参数文件,不断替换,仍然解决不了问题,便回到脚本,回放不报错,但将迭代次数为1次(默认)改为2次,开始报错:

正常日志:

[html] view plaincopy


    Action.c(37): Notify: Parameter Substitution: parameter "租户IP" =  "saastestpj19.chinaedu.net:8080" 
    Action.c(49): Notify: Parameter Substitution: parameter "学生用户名19" =  "125028032" 
    <strong>Action.c(49): Notify: Saving Parameter "用户名 = 125028032".</strong> 
    Action.c(55): Notify: Next row for parameter 学生密码19 = 22803 [table  = 学生密码19]. 
    Action.c(55): Notify: Getting new value for parameter '学生密码19': table = '学生密码19.dat' column = '0' row = '22803'. 
    Action.c(55): Notify: Parameter Substitution: parameter "学生密码19" =  "125028032" 
    <strong>Action.c(55): Notify: Saving Parameter "密码 = 125028032".</strong> 
    Action.c(61): Notify: Next row for parameter 学生姓名19 = 22803 [table  = 学生姓名19]. 
    Action.c(61): Notify: Getting new value for parameter '学生姓名19': table = '学生姓名19.dat' column = '0' row = '22803'. 
    Action.c(61): Notify: Parameter Substitution: parameter "学生姓名19" =  "125028032" 
    <strong>Action.c(61): Notify: Saving Parameter "学生姓名 = 125028032"</strong> 

异常日志,即第二次开始迭代日志:

[html] view plaincopy


    Action.c(37): Notify: Parameter Substitution: parameter "租户IP" =  "saastestpj1.chinaedu.net:8080" 
    Action.c(49): Notify: Parameter Substitution: parameter "学生用户名19" =  "124939121" 
    Action.c(49): Notify: Parameter Substitution: parameter "学生用户名1" =  "124357652" 
    <strong>Action.c(49): Notify: Saving Parameter "用户名 = 124939121124357652".</strong> 
    Action.c(55): Notify: Next row for parameter 学生密码19 = 13912 [table  = 学生密码19]. 
    Action.c(55): Notify: Parameter Substitution: parameter "学生密码19" =  "124939121" 
    Action.c(55): Notify: Next row for parameter 学生密码1 = 9764 [table  = 学生密码1]. 
    Action.c(55): Notify: Parameter Substitution: parameter "学生密码1" =  "124357652" 
    <strong>Action.c(55): Notify: Saving Parameter "密码 = 124939121124357652".</strong> 
    Action.c(61): Notify: Next row for parameter 学生姓名19 = 13912 [table  = 学生姓名19]. 
    Action.c(61): Notify: Parameter Substitution: parameter "学生姓名19" =  "124939121" 
    Action.c(61): Notify: Next row for parameter 学生姓名1 = 9764 [table  = 学生姓名1]. 
    Action.c(61): Notify: Parameter Substitution: parameter "学生姓名1" =  "124357652" 
    <strong>Action.c(61): Notify: Saving Parameter "学生姓名 = 124939121124357652"</strong> 

用户名,密码,姓名随着迭代进行累加组合,这样肯定不对。

部分脚本:

[html] view plaincopy
Action()
{
char userNameFile[200];
char passWordFile[200];
char realNameFile[200];
char numstr[10];
char *ip, *num, *fileNameStr, *passwordFileNameStr, *realNameFileNameStr;
ip = lr_eval_string("{租户IP}");
num=getDomainNum(ip);


            fileNameStr = "学生用户名"; 
        passwordFileNameStr = "学生密码"; 
        realNameFileNameStr = "学生姓名"; 

//根据租户IP读取对应的用户名参数文件 
strcat(userNameFile, "{");
      strcat(userNameFile, fileNameStr);
      strcat(userNameFile, num);
strcat(userNameFile, "}");


        lr_save_string(lr_eval_string(userNameFile),"用户名"); 

修改后的脚本:

[html] view plaincopy
Action()
{
      //修改2014-09-11;增加数组初始化,否则迭代2次以上时参数叠加,执行失败 
char userNameFile[200]={'\0'};
char passWordFile[200]={'\0'};
char realNameFile[200]={'\0'};
      char numstr[10];
      char *ip, *num, *fileNameStr, *passwordFileNameStr, *realNameFileNameStr;
      ip = lr_eval_string("{租户IP}");
      num=getDomainNum(ip);


        fileNameStr = "学生用户名"; 
        passwordFileNameStr = "学生密码"; 
        realNameFileNameStr = "学生姓名"; 

//根据租户IP读取对应的用户名参数文件 
strcat(userNameFile, "{");
      strcat(userNameFile, fileNameStr);
      strcat(userNameFile, num);
strcat(userNameFile, "}");


        lr_save_string(lr_eval_string(userNameFile),"用户名"); 

即对声明的数组进行初始化。否则在迭代中会将新取得的参数与之前的参数累加组合,而这样的参数数据库中并不存在,导致执行失败;
初始化数组后,问题解决

--转自 北京联动北方科技有限公司

该贴由koei123转至本版2015-2-6 4:58:23



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论