回 帖 发 新 帖 刷新版面

主题:关于大程序的调试

解常微分方程组的程序。该程序运行的时候会出错:sqrt函数超定义域。但由于子程序、循环繁多,自己调试的时候一直按F11太累,找不到数值溢出的位置。不知道版内高人有没有什么高级的调试技巧,能迅速找到BUG点。若能直接告知溢出值的所在位置和溢出原因更好。在线等。
该程序无任何外部输入文件依赖,直接粘贴代码即可调试,望DEBUG高人帮忙。。。



回复列表 (共5个回复)

沙发

看看调用SQRT函数时,括在SQRT里的表达式的关键项,在程序操作关键项代码的若干个地方输出中间结果试试。

板凳

好的 ,我再试试吧。貌似程序代码的附件没传上来……

3 楼

[quote]好的 ,我再试试吧。貌似程序代码的附件没传上来……[/quote]

用IVF,出错时自动提示出错代码的行号,以及是哪个变量出的错

4 楼


sqrt一般在后面的数值为负数的时候出错。
在其前面加3行代码

 IF ( A .LT. 0.0) THEN 
    CONTINUE
 ENDIF
 B = SQRT(A)

在continue行加一个断点,采用DEBUG模式调试,如果表达式A出现负值,则会在continue出中断,这时候就可以查看A的数值了

5 楼

你调试时可以看一看循环变量(或循环条件)取到多少时中止了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册