主题:[讨论]求助FORTRAN在运行中出现应用程序错误
annawang_728
[专家分:0] 发布于 2011-07-30 09:48:00
用FORTRAN编程时,编译没有警告也没有错误,但是在运行中出现了应用程序错误,不知该如何解决,还请各位能帮帮忙,在下感激不尽啊。具体错误为:
forrt1:severe<157>:Program Exception-access violation
"ox005173e8"指令引用的"0x00000001"内存,该内存不能为"written".
回复列表 (共14个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2011-07-30 17:41:00
访问无效内存?看着像是空指针的相对位置的使用。。。
你编译成Debug版本后,使用F5执行就能定位了:)
板凳
annawang_728 [专家分:0] 发布于 2011-07-30 21:43:00
谢谢您,我按照您的方法试了,然后定位到我的程序的最开头,这个是说明我程序一开始就有问题的吗?
3 楼
cgl_lgs [专家分:21040] 发布于 2011-07-30 21:51:00
最开头?是开头的什么语句?
4 楼
annawang_728 [专家分:0] 发布于 2011-07-30 22:05:00
就是最开头的注释语句。。。。
5 楼
annawang_728 [专家分:0] 发布于 2011-07-30 22:10:00
我点了F5后,界面出现这样的字:user breakpoint called from code at 0x7c92120e,然后我点击确定后,又点了下disassembly.回到原来程序界面,那个鼠标就在程序最前面的,即注释的最前面。
6 楼
annawang_728 [专家分:0] 发布于 2011-07-30 22:13:00
对了,在那个运行界面上出现这样的话:
Incrementally linked image--PC correlation disabled
请问这种情况又是因为哪里出了问题呢?谢谢您了。
7 楼
cgl_lgs [专家分:21040] 发布于 2011-07-30 22:55:00
你调出Call Stack窗口看看呢?
8 楼
annawang_728 [专家分:0] 发布于 2011-07-31 09:03:00
您好,我调出来后出现这样的代码,可是我看不明白。。。。
NTDLL! 7c92120e()
RADAR5! _FF_puterr + 49 bytes
RADAR5! _FF_puterr + 920 bytes
RADAR5! _matherr + 862 bytes
RADAR5! _87except + 318 bytes
RADAR5! _startOneArgErrorHandling + 41 bytes
RADAR5! sqrt + 164 bytes
RADCOR(INTEGER(4) 12, REAL(8) 0.000000000000000E+000, REAL(8) {...}, REAL(8) 2.50000000000000, REAL(8) 1.782376982252545E-152, INTEGER(4) 4481889, INTEGER(4) 4551193, INTEGER(4) 4481853, REAL(8) {...}, REAL(8) {...}, INTEGER(4) 0, INTEGER(4) 5075944, INTEGER(4) 0, INTEGER(4) 12, INTEGER(4) 12, INTEGER(4) 4539161, INTEGER(4) 4551348, INTEGER(4) 12, INTEGER(4) 0, INTEGER(4) ...) line
RADAR5(INTEGER(4) 12, INTEGER(4) 4481889, INTEGER(4) 4551193, INTEGER(4) 4481853, REAL(8) 0.000000000000000E+000, REAL(8) {...}, REAL(8) 2.50000000000000, REAL(8) 1.782376982252545E-152, REAL(8) {...}, REAL(8) {...}, INTEGER(4) 0, INTEGER(4) 5075944, INTEGER(4) 0, INTEGER(4) 12, INTEGER(4) 12, INTEGER(4) 4539161, INTEGER(4) 1, INTEGER(4) 12, INTEGER(4) 1, INTEGER(4) 4480902, ...) l
MAIN$CRANECONTROL3D() line 132 + 61 bytes
RADAR5! main + 73 bytes
mainCRTStartup() line 206 + 25 bytes
KERNEL32! 7c817077()
其中RADAR是我的程序的名字。从这个怎么看到自己的程序哪里出错了呢?还望热心人帮忙解答,谢谢您了。
9 楼
cgl_lgs [专家分:21040] 发布于 2011-07-31 21:04:00
双击“RADCOR(INTEGER(4) 12, REAL(8)”这行,定位的就是你的程序出错的地方了:)
是开方时出错的。。。。
10 楼
annawang_728 [专家分:0] 发布于 2011-08-02 22:22:00
您好,我按你说的方法试了,的确出现了绿色箭头所指的程序行,我还想请教下,之后的提示我还需要双击吗?因为我也试着双击了下,也出现了对应的语句,想问下这个出现的绿箭头所指的程序是不是也有问题呢?谢谢您了~
我来回复