回 帖 发 新 帖 刷新版面

主题:[原创]CVF中Debug模式的使用

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 楼

我是在2800多个步长才出错的,运行了9个多小时,要用断点一个一个点?不累死啊
怎么看1000以上数组

42 楼

我出想知道,大侠请指教.

43 楼

问一下:加入了Fortran Standard Checking: Fortran 90/95,出现了很多warning,比如:Extension to FORTRAN-90: tab formatting   integer::atom 
这是什么意思,会有影响吗?

44 楼

Fortran95 不支持 Tab 键,你用 Fortran95 Standard Checking 当然会出来这些警告.忽略它,这个没有关系;当然,我不是让你忽略所有的 Warning 信息,很多警告信息都是有用的.

45 楼

[quote]我是在2800多个步长才出错的,运行了9个多小时,要用断点一个一个点?不累死啊
怎么看1000以上数组[/quote]

可以为断点设置条件,当满足条件时自动断。但是程序运行速度会慢很多。呵呵。所以,还是在自己的程序中预先加入一些防错语句比较好。

46 楼

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 楼


红色数据好像应该是刚刚被重新赋值

48 楼

我在调试的时候出现:
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 楼

[quote]我是在2800多个步长才出错的,运行了9个多小时,要用断点一个一个点?不累死啊
怎么看1000以上数组[/quote]

同问“怎么看1000以上的数组”?

50 楼

1.用arrayviewer
2.array(1000:2000),不知道行不行。

我来回复

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