出现这样的问题用该如何调试

panpan1202 2011-04-07 11:58:58
程序是这样的
main()
{
。。。。
。。。
for(i=1;i<1555000;i++)
{ ...
...
for(b=1;b<=3,b++)
{ ...
Fmsum[b][i]=Fnsum[b][i]+Fnij[b];
.....
}
}
}

程序编译运行一段时间后,出现问题,调试后显示问题出现在 Fmsum[b][i]=Fnsum[b][i]+Fnij[b];显示的问题是:
Fnsum 0xc65fe8df
CXX0030: Error:expression cannot be evaluated
我认真看程序,也找不出问题,而且关键是这样,程序运行很久才出错的,不如for循环了很多后才出现的,而我对调试不是很清楚,所以想听听大家的意见,如何调试啊?
...全文
248 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2011-04-12
  • 打赏
  • 举报
回复
1.数组是否太大超出了栈内存。
2.for(b=1;b<=3,b++)//这里是否有越界情况。
3.Fmsum[b][i]怎么定义的。然后主要代码再详细点
cao_julians 2011-04-12
  • 打赏
  • 举报
回复
for(b=1;b<=3,b++)//这里多个逗号,少个分号,应该通不过编译

sky198306 2011-04-12
  • 打赏
  • 举报
回复
单步运行下那~
panpan1202 2011-04-11
  • 打赏
  • 举报
回复
找好久找不出来啊 后来试着算了8000个颗粒,程序正常且计算也正确,真真郁闷了,但颗粒一加到1万就不行了,仍是出现上述错误
驴被脑袋踢了 2011-04-07
  • 打赏
  • 举报
回复
应该是访问越界或者没有初始化数组引起的
pathuang68 2011-04-07
  • 打赏
  • 举报
回复
给出的代码信息量不够啊
安乐风流 2011-04-07
  • 打赏
  • 举报
回复
在Fmsum[b][i]=Fnsum[b][i]+Fnij[b];前加断点,按住F10读出错时变量的值再行判断
Proteas 2011-04-07
  • 打赏
  • 举报
回复
Fmsum[b][i]=Fnsum[b][i]+Fnij[b];

申请的空间够不够?
索引是否正确?

可以在赋值前,加个条件判断,在条件不满足时,提示错误,退出函数。
luciferisnotsatan 2011-04-07
  • 打赏
  • 举报
回复
Fmsum和Fnij是什么?
linux_ljm 2011-04-07
  • 打赏
  • 举报
回复
数组初始化了吗
pengzhixi 2011-04-07
  • 打赏
  • 举报
回复
贴全代码吧
c_losed 2011-04-07
  • 打赏
  • 举报
回复
感觉溢出了
把循环拆开 然后慢慢调 看哪里出的问题
yangch_nhcmo 2011-04-07
  • 打赏
  • 举报
回复
Fmsum[][] 或 Fnij[]数组没有初始化吧
yangch_nhcmo 2011-04-07
  • 打赏
  • 举报
回复
Fmsum[][]数组没有初始化吧
panpan1202 2011-04-07
  • 打赏
  • 举报
回复
而且我这个程序是计算颗粒碰撞的,当颗粒是3000,4000的时候,完全可以计算完整。但颗粒一万的时候,就出现上述错误了
panpan1202 2011-04-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhao4zhong1 的回复:]
main()
{
。。。。
。。。
for(i=1;i<1555000;i++)
{ ...
...
for(b=1;b<=3,b++)
{ ...
if ((i%1000)==0) {
printf("i=%d\n");//先加这句看显示多少之后出错
}
if (i==1554999) {//再修改1554999这个数值为出错前的数值
……
[/Quote]

我试下看看,谢谢
wyfwx 2011-04-07
  • 打赏
  • 举报
回复
数组开得也太大了吧,不知道能不能分配这么大
panpan1202 2011-04-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shenjian12 的回复:]
在Fmsum[b][i]=Fnsum[b][i]+Fnij[b];前加断点,按住F10读出错时变量的值再行判断
[/Quote]
在该句加了断点,但刚运行到断点的时候是正确的,你没有看懂我的问题,是运行运行着就出错了
panpan1202 2011-04-07
  • 打赏
  • 举报
回复
初始化了的,以前程序运行很正确的,后来个人需要,我又加了一些边界条件,就出现这样的错误[Quote=引用 2 楼 yangch_nhcmo 的回复:]
Fmsum[][] 或 Fnij[]数组没有初始化吧
[/Quote]
赵4老师 2011-04-07
  • 打赏
  • 举报
回复
main()
{
。。。。
。。。
for(i=1;i<1555000;i++)
{ ...
...
for(b=1;b<=3,b++)
{ ...
if ((i%1000)==0) {
printf("i=%d\n");//先加这句看显示多少之后出错
}
if (i==1554999) {//再修改1554999这个数值为出错前的数值
i=i;//并在这句设置断点
}
Fmsum[b][i]=Fnsum[b][i]+Fnij[b];
.....
}
}
}

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧