loadrunner:Error -- memory violation : Exception ACCESS_VIOLATION received的解决办法

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

“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次,开始报错:

正常日志:

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>
异常日志,即第二次开始迭代日志:

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>
用户名,密码,姓名随着迭代进行累加组合,这样肯定不对。

部分脚本:

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),"用户名");
修改后的脚本:

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),"用户名");
即对声明的数组进行初始化。否则在迭代中会将新取得的参数与之前的参数累加组合,而这样的参数数据库中并不存在,导致执行失败;


初始化数组后,问题解决;


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值