loadrunner中for语句的诡异结果

本文探讨了使用LoadRunner进行脚本编写时遇到的内存越界错误问题。具体表现为当循环变量作为数组下标时,导致数组越界,引发异常。通过对示例脚本的分析,展示了如何复现该问题,并提出疑问寻求解决方案。

Action()
{
int i;

char j[10][20];
int count=10;

 

//循环1:i最大为10
for (i=1;i<=10;i++) {
sprintf(j[i],"abc",i);
lr_output_message("√ j%d=%s/n",i,lr_eval_string(j[i]));
}

 

//循环2:i最大为11
for (i=1;i<=count;i++) {
sprintf(j[i],"abc",i);
lr_output_message("× j%d=%s/n",i,lr_eval_string(j[i]));
}
return 0;
}

 

通过循环对数组赋值,循环用常量赋值则一切正常,如用自定义变量则会越界,比如上例中count=10,结果存在i=11的情况,这时lr会报错

 

——难道是C语言编译器的问题?这样的结果岂不是不能用变量做for边界?

 

以上脚本可以贴到action中直接运行,有兴趣的可以试试,欢迎高手解惑:)

 

-----------------------------------------Ps:我的运行结果--------------------------------

Virtual User Script started
Starting action vuser_init.
Web Turbo Replay of LoadRunner 8.1.0 for WIN2003; Web build 4788 [MsgId: MMSG-27143]
Run-Time Settings file: "C:/Documents and Settings/robin/Local Settings/Temp/noname4//default.cfg" [MsgId: MMSG-27141]
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Action.
Action.c(8): √ j1=abc
Action.c(8): √ j2=abc
Action.c(8): √ j3=abc
Action.c(8): √ j4=abc
Action.c(8): √ j5=abc
Action.c(8): √ j6=abc
Action.c(8): √ j7=abc
Action.c(8): √ j8=abc
Action.c(8): √ j9=abc
Action.c(8): √ j10=abc
Action.c(14): × j1=abc
Action.c(14): × j2=abc
Action.c(14): × j3=abc
Action.c(14): × j4=abc
Action.c(14): × j5=abc
Action.c(14): × j6=abc
Action.c(14): × j7=abc
Action.c(14): × j8=abc
Action.c(14): × j9=abc
Action.c(14): × j10=abc
Action.c(14): × j11=
Action.c(14): Error: C interpreter run time error: Action.c (14): Error -- memory violation : Exception ACCESS_VIOLATION received.
Action.c(14): Error: An exception was raised while calling invocation function in interpreter extension cciext.dll: System Exceptions: EXCEPTION_ACCESS_VIOLATION.
Ending Vuser...
Starting action vuser_end.
Action.c(14): Notify: CCI trace: Action.c(14): vuser_end()
.
Action.c(14): Notify: CCI trace: pop[1] -> 0
.
Ending action vuser_end.
Vuser Terminated.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值