主题:[原创]CVF中Debug模式的使用
mltx
[专家分:20880] 发布于 2005-11-06 11:37:00
CVF中有两种编译(连接、执行)模式:release模式和debug模式。
调试程序时,宜用debug模式;调好后再用release模式,得到高效的执行程序。
设定debug模式:
点击菜单Build/Set Active Project Configuration,选 *- Win32 Debug,OK,即设定为debug模式。
以debug模式执行:
点击“Go (F5)”按钮,或直接按F5键,则执行程序,并在第一个出错语句处停止,在该语句前有一个小黄色箭头。
若程序没错,则一直执行完毕,自动关闭dos窗口。此时,宜用“!”按钮或“Ctrl+F5”键,执行完成后,dos窗口等待用户关闭。
设置断点:
若希望执行时在某一语句处暂停,可将光标置于该语句,点击“手”形状的按钮,或按F9键,则程序执行到该语句时停在该语句处。
单步执行:
F10(不进入子过程程序段)或者F11(遇到子过程进入子过程程序段继续单步执行)。在工具栏上都有相应的按钮。
查看变量值:
小黄箭头停在某语句时,按下Variable按钮,显示当前程序段的变量值;
对于简单变量,将光标放在该变量上,则即时显示该变量值。
先简单说这么多。
[color=FF0000]2005.11.06:如何用Debug模式获得更多的提示信息[/color]
依次选择/打开:Project => Settings => Fortran => Compilation Diagnostics
建议选中以下各项:
Argument Mismatch (类型不一致)
Data Alignment (数据排列错位)
Uncalled Routines (从无调用的子过程)
Undeclared Symbols (未声明变量、过程等)
Uninitialized Variables (未赋初始值的变量)
Unused Variables (从未用到的变量)
Usage (用法)
用了这些选项,可以对很多潜在的问题给予警告,使代码更为规范安全。
注意:Uninitialized Variables只对简单变量有效,对数组无效。如果简单变量a未给初值,而用于 b=3.0*a,则编译时将报错,但是如果a是个数组变量,则不报错。(不知后来的Intel VF版本有没有改进?)
另外也建议以下设置:
Fortran Standard Checking: Fortran 90/95
这样,非标准的、厂家扩充的语法功能就会给出警告。
回复列表 (共57个回复)
41 楼
sunjsjj [专家分:20] 发布于 2006-01-11 09:28:00
我是在2800多个步长才出错的,运行了9个多小时,要用断点一个一个点?不累死啊
怎么看1000以上数组
42 楼
zyzl [专家分:30] 发布于 2006-01-25 16:18:00
我出想知道,大侠请指教.
43 楼
zhngbn [专家分:0] 发布于 2006-08-09 17:00:00
问一下:加入了Fortran Standard Checking: Fortran 90/95,出现了很多warning,比如:Extension to FORTRAN-90: tab formatting integer::atom
这是什么意思,会有影响吗?
44 楼
asymptotic [专家分:16630] 发布于 2006-12-07 16:12:00
Fortran95 不支持 Tab 键,你用 Fortran95 Standard Checking 当然会出来这些警告.忽略它,这个没有关系;当然,我不是让你忽略所有的 Warning 信息,很多警告信息都是有用的.
45 楼
jdragon01 [专家分:0] 发布于 2006-12-27 18:38:00
[quote]我是在2800多个步长才出错的,运行了9个多小时,要用断点一个一个点?不累死啊
怎么看1000以上数组[/quote]
可以为断点设置条件,当满足条件时自动断。但是程序运行速度会慢很多。呵呵。所以,还是在自己的程序中预先加入一些防错语句比较好。
46 楼
hliupeng [专家分:0] 发布于 2007-01-11 11:17:00
subroutine F_numDLL(Arrnum,y)
!DEC$ ATTRIBUTES DLLEXPORT::F_numDLL
!DEC$ ATTRIBUTES ALIAS:"F_numDLL"::F_numDLL
! Variables
INTEGER(2), INTENT(IN) :: Arrnum(3)
INTEGER(2), INTENT(OUT):: y
! Body of SlitfinDLL
OPEN(100,FILE='DATA.DAT')
WRITE(100,*) Arrnum
close(100)
y=Arrnum(1)
end subroutine F_numDLL
楼主帮我看看这个程序,我把它编译成DLL,但是在用VBA调它的时候提示说是找不到文件DLL,名称路径都没问题的,然后我把文件操作的那几行去掉就可以用,这是什么原因造成的?我把DEBUG格式换成RELEASE格式,可以用了一天,第二天就又不行了,请楼主及各位高手指教!
不胜感激!
47 楼
qqz2001 [专家分:50] 发布于 2007-03-26 19:47:00
红色数据好像应该是刚刚被重新赋值
48 楼
geqi0226 [专家分:0] 发布于 2007-05-30 11:25:00
我在调试的时候出现:
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
The thread 0xF30 has exited with code 0 (0x0).
The program 'E:\STUDY\FORTRAN\TEST\C\c\Debug\c.exe' has exited with code 0 (0x0).
就看不到你们说的箭头,这是怎么回事?
49 楼
yezi1012 [专家分:50] 发布于 2007-07-24 15:56:00
[quote]我是在2800多个步长才出错的,运行了9个多小时,要用断点一个一个点?不累死啊
怎么看1000以上数组[/quote]
同问“怎么看1000以上的数组”?
50 楼
mltx [专家分:20880] 发布于 2007-07-24 16:43:00
1.用arrayviewer
2.array(1000:2000),不知道行不行。
我来回复