主题:[讨论]大家有没有遇到这个问题呢?请大侠 们帮帮忙...
scoot
[专家分:30] 发布于 2011-07-18 15:17:00
最近写了个比较大型的程序,调试运行都能成功,但就是每次运行时,程序只能迭代运行几步(我的程序每迭代一步大概需要半小时左右),然后程序就自动断掉了,最后显示的大概是这么一句“press any key to continue”。后来我没办法了,只好在程序中把每次迭代计算步的关键数据存为文件,等它断掉后,继续运行计算,这样的处理能够接着断点继续计算。哎...这个问题都困扰我好长时间了,一直都没得到解决。各位大虾们有没有遇到过这种类似的问题啊?这种问题怎么调试和处理才能让它一直能够迭代计算直到达到相应的收敛计算精度?
回复列表 (共28个回复)
11 楼
scoot [专家分:30] 发布于 2011-07-19 12:20:00
非常感谢您的建议,我正在把规模缩小计算调试,目前还没出结果,呵呵...
等出了结果了,我再和各位大侠讨论讨论....万分感谢...
12 楼
scoot [专家分:30] 发布于 2011-07-19 13:49:00
您好!我把计算的矩阵缩小了,但是一直运行了3个小时共迭代了15步后,又出现了press any key to continue ,问题依然存在。哎......这个问题真不好解决。
13 楼
yeg001 [专家分:14390] 发布于 2011-07-19 22:30:00
"运行了3个小时", 没输出其他异常吗? 是在debug模式编译吗? 查查程序有什么地方使用了stop?
14 楼
scoot [专家分:30] 发布于 2011-07-20 12:49:00
您好!我是在debug模式下编译的,用的是CVF。断掉的时候根本没有显示其他异常,就提示一句"press any key to continue"。我编程序也有好几个年头了,这回还是头一回碰到这个问题。郁闷了...
15 楼
yeg001 [专家分:14390] 发布于 2011-07-20 20:35:00
信息太少, 挺难猜出是什么地方出问题. 楼主换个编译器试试?
16 楼
scoot [专家分:30] 发布于 2011-07-22 22:15:00
您好,这几天一直在试着调试程序,没上论坛。
最近我还是用的CVF,在DEBUG模式下运行一个晚上后,终于找到了程序问题的所在。后来想起来才发现,我程序中一个子程序在整个的迭代运行(直到收敛)中需要运行差不多几十万次。在运行的中间断掉显示“press any key to continue”的地方正是发生在调用这个子程序的时候,且CVF的debug模式下提示寻找DBGHEAP.C文件,但是我发现我安装的CVF里面根本就没有这个文件。百度上有说可能是堆溢出的问题,但是如果是的话,具体怎么解决这个堆溢出的问题呢?
明天我试着用intel fortran试试
17 楼
yeg001 [专家分:14390] 发布于 2011-07-22 23:28:00
递归迭代的话有可能是堆栈爆了. 这方面论坛里其它几位比我熟悉~
18 楼
dongyuanxun [专家分:7180] 发布于 2011-07-23 01:53:00
不知道这所谓的“大型”是指运行时间长,还是代码行数超过10万行了。
19 楼
scoot [专家分:30] 发布于 2011-07-23 09:02:00
您好!非常感谢这段时间您对我的帮助。您能帮我推荐一位吗?我好好向他请教下这个问题的解决方法
20 楼
scoot [专家分:30] 发布于 2011-07-23 09:04:00
就是说我程序中的一个子程序整个计算过程中(直到收敛为止)要迭代差不多几十万次,而就在迭代的这个过程中出现了"press any key to continue"
我来回复