Fortran Coder

标题: fortran程序调试问题 [打印本页]

作者: countay    时间: 2018-2-19 10:53
标题: fortran程序调试问题
我是一个学习fortran的新手,想问一个比较基础的调试程序的问题。我这个程序是一个热力学分析的程序

我每次调试程序的时候都首先“运行到光标处”,然后逐语句或者逐段落的调试。如下图所示,当运行到一段程序后“ElemState%changes=0_1”,会进行一段计算,窗口会显示一次计算,但是就无法进行下一步的调试了,逐语句和逐段落的部分也变成了灰色,我想问一下想继续往下进行程序应该怎么做?


1.png (193.42 KB, 下载次数: 427)

运行到光标处

运行到光标处

2.png (18.6 KB, 下载次数: 427)

运行到光标处

运行到光标处

3.png (185.81 KB, 下载次数: 420)

逐语句,逐段落

逐语句,逐段落

4.png (185.26 KB, 下载次数: 400)

逐语句,逐段落

逐语句,逐段落

5.png (182.64 KB, 下载次数: 412)

运行到这里再逐段落就无法调试了

运行到这里再逐段落就无法调试了

6.png (177.95 KB, 下载次数: 378)

可以看到逐语句和逐段落的地方变成灰色

可以看到逐语句和逐段落的地方变成灰色

7.png (33.75 KB, 下载次数: 414)

第一次计算

第一次计算

作者: countay    时间: 2018-2-19 10:56
我是个新手,第一次接触fortran程序,只是自学了一下fortran95这本书,由于学业要求,必须要把错误的程序调试好,望各位大神指教,十分感谢
作者: vvt    时间: 2018-2-19 11:51
在数组整体操作的语句上,进行逐语句,可能会很慢。
你可以在下一条语句下断点,然后直接飞过这个语句。
作者: pasuka    时间: 2018-2-22 09:24
个人建议:
1、不要把有限的精力放在掌握一门已经被国家计算机等级考试剔除的编程语言上;
2、从截图看,这个大作业显然是从网上下载的国外教科书配套程序或者开源代码,为啥不能追本溯源找到正确的代码然后比较差异呢?
3、调试通过也不代表结果正确,熟悉课程的知识点才是关键
作者: pasuka    时间: 2018-2-22 09:50
本帖最后由 pasuka 于 2018-2-22 09:51 编辑

简单搜索了一下,八成就是这个程序吧,或许lz的版本更旧一点
https://www.osti.gov/servlets/purl/1165986
USER’S MANUAL FOR THE HYDRATE v1.5 OPTION OF TOUGH+ v1.5:
A CODE FOR THE SIMULATION OF SYSTEM BEHAVIOR IN HYDRATEBEARING GEOLOGIC MEDIA
George J. Moridis
Earth Sciences Division,
Lawrence Berkeley National Laboratory,
Berkeley, CA 94720


作者: countay    时间: 2018-2-28 16:15
pasuka 发表于 2018-2-22 09:50
简单搜索了一下,八成就是这个程序吧,或许lz的版本更旧一点
https://www.osti.gov/servlets/purl/1165986
...

大神,你咋找到这个程序的啊?太厉害了
作者: pasuka    时间: 2018-2-28 16:28
countay 发表于 2018-2-28 16:15
大神,你咋找到这个程序的啊?太厉害了

用必应国际版搜索代码注释的若干关键字呗
只能帮你到这里啦,后面的路请lz自己走
作者: countay    时间: 2018-2-28 16:55
pasuka 发表于 2018-2-28 16:28
用必应国际版搜索代码注释的若干关键字呗
只能帮你到这里啦,后面的路请lz自己走 ...

实际上我这个程序就是原版程序,但是原版程序应该是有bug,温度计算结果与实际相差太多,我想把程序的bug修掉,由于我本身不是计算机专业,所以自学了一下fortran95这本书,但是实际调试的时候还是无从下手,大神你有没有什么建议?
作者: pasuka    时间: 2018-2-28 21:43
countay 发表于 2018-2-28 16:55
实际上我这个程序就是原版程序,但是原版程序应该是有bug,温度计算结果与实际相差太多,我想把程序的bug ...

大胆怀疑,小心求证。
1、我给出的使用手册对于版本号1.5,最新的版本又是多少?
2、初学者都能发现不对劲,业内大佬和程序开发者会熟视无睹?还是lz自己本专业的道行不够呢?
3、英语好歹过六级了,厚脸皮给手册作者或者程序开发者写个电子邮件总行吧?
作者: countay    时间: 2018-3-1 09:31
pasuka 发表于 2018-2-28 21:43
大胆怀疑,小心求证。
1、我给出的使用手册对于版本号1.5,最新的版本又是多少?
2、初学者都能发现不对 ...

最新版本不太清楚,我有给开发者写过邮件,年前写的,但是一直没有回复,我们除了单行版还有一个并行版,同样的计算文件,经过并行版计算的结果就是准确的,单行版计算的结果就是不准确的,所以我可以肯定是单行版代码出现了问题,只是并行版本不能修改程序代码,只有单行版可以调试。
作者: countay    时间: 2018-3-1 10:14
pasuka 发表于 2018-2-28 21:43
大胆怀疑,小心求证。
1、我给出的使用手册对于版本号1.5,最新的版本又是多少?
2、初学者都能发现不对 ...

对于软件分析,我是一个新手,刚考上研究生,这个软件也是新学的,在计算过程遇到了诸多问题,所以想学习一下如何调试软件,之前的问题我已经解决了,非常感谢您的帮助。
作者: pasuka    时间: 2018-3-1 10:19
countay 发表于 2018-3-1 09:31
最新版本不太清楚,我有给开发者写过邮件,年前写的,但是一直没有回复,我们除了单行版还有一个并行版, ...

那就甭折腾单步调试,在关键处添加write语句,把计算过程中主要的中间变量都输出到文件,再与理论值或者其它程序的数值进行比较
作者: countay    时间: 2018-3-1 10:33
vvt 发表于 2018-2-19 11:51
在数组整体操作的语句上,进行逐语句,可能会很慢。
你可以在下一条语句下断点,然后直接飞过这个语句。 ...

非常感谢您的帮助




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2