51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3559|回复: 8
打印 上一主题 下一主题

[原创] Lr中的for循环越界问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-6-1 16:07:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
update:原来的代码因为转码的原因去掉了方括号,更新为

LR脚本如下:
----------------------------------------------------------
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;
}
----------------------------------------------------------
这是简化后的脚本 ,[color=#ff0000]问题是:为什么加了变量的循环会越界[/color]
脚本说明:
通过循环对数组赋值,循环用常量赋值则一切正常,如用自定义变量则会越界,比如上例中count=10,结果存在i=11的情况,这时lr会报错
[font=mceinline]——难道是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): 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.

[[i] 本帖最后由 hanyuan72 于 2010-6-3 16:25 编辑 [/i]]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    2#
    发表于 2010-6-1 22:31:45 | 只看该作者
    你改一下 char j[10][20];
    改为 char j[11][20]; 就行了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2010-6-2 08:40:34 | 只看该作者
    啥子东西,还要积分
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2010-6-2 08:54:34 | 只看该作者
    C语言不过关,这样的错误都犯了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2010-6-2 11:43:10 | 只看该作者
    c的下标是从0开始的,10下标就是第11个元素
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2010-6-2 14:08:48 | 只看该作者

    回复 1# 的帖子

    基础问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2010-6-3 16:08:09 | 只看该作者

    回复 2# 的帖子

    如果说只是0~9和1~10的问题,为何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));
    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2010-6-3 16:18:09 | 只看该作者

    请各位看清楚问题:为何常量不越界,而变量会越界,谢谢:)

    请各位看清楚问题:为何常量不越界,而变量会越界,谢谢:)
    即使把变量改为count=9,循环改为0~9一样会越界——不是下标问题
    for (i=0;i<=count;i++) {
    sprintf(j[i],"abc",i);
    lr_output_message("× j%d=%s\n",i,lr_eval_string(j[i]));
    }

    而同样的写法在C++里是不会越界——也不是C问题
    # include "ostream"
    int main() {
      int i;
      char j[10][20];
      int cnt;
      cnt=5;

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

      //循环2:i最大为11
      for (i=1;i<=cnt;i++) {
    strcpy(j[i],"abc");
      printf("* j%d=%s\n",i,j[i]);
      }

      return (0);
    }

    ——这是loadrunner的问题!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2010-6-3 16:19:11 | 只看该作者

    回复 3# 的帖子

    要什么积分?不用回复的人付吧?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-20 20:48 , Processed in 0.109404 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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