从文本文件读取时,GDB 调试器挂起在 Fortran READ 命令上



这是我的 fortran 代码 (fortcode.for(

CHARACTER  TITLE*80                                                                                                                                         
COMMON   IN                                                                                                        
COMMON   TITLE 
PARAMETER (MAXTIT=20)
20    FORMAT (A80)    
C*****FORTRAN LOGICAL UNIT NUMBER OF INPUT FILE                      
IN  = 5                                  
DO 1665 I=1, MAXTIT
READ (IN,20) TITLE
1665  CONTINUE
CLOSE (IN)                        
END  

我使用以下命令将 fortran 文件编译为可执行文件 (fortexec.exe(。

gfortran -g -fno-align-commons fortcode.for -o fortexec.exe

然后我通过键入使用 gdb 调试器

gdb fortexec

然后我给它以下文件输入(input.inp(

testx testy testz                    
testx testy testz
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety
testk tety 

通过键入以下内容

run < input.inp

它开始运行,但随后只是挂起。

我键入 Ctrl-C 来中断它,然后它给我以下结果

[New Thread 10804.0x5b6c]
[New Thread 10804.0x4974]
[New Thread 10804.0x3c24]
[New Thread 10804.0x4ae8]
At line 11 of file fortcode.for (unit = 5, file = 'stdin')
Fortran runtime error: [New Thread 10804.0x48e8]
End of file
Error termination. Backtrace:
Program received signal SIGINT, Interrupt.
[Switching to Thread 10804.0x48e8]
0x765b1985 in KERNELBASE!CtrlRoutine () from 
C:WINDOWSSysWOW64KernelBase.dll

任何想法如何停止挂起,并使其使用文件输入进行调试? 谢谢

您可能没有提供正确的输入文件名,您的设置在我的笔记本电脑上使用 gfortran 没有问题。 如果我提供不存在的输入,它会冻结,并且在 CTRL+C 之后我会收到相同的警告。我会打印读取的内容只是为了验证它是否正常工作

最新更新