回 帖 发 新 帖 刷新版面

主题:[原创]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个回复)

31 楼

Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
The thread 0xD44 has exited with code 0 (0x0).
The program 'F:\TEST\Debug\TEST.exe' has exited with code 0 (0x0).

我的出现这个东西,是什么意思?大牛指教!谢谢

32 楼

绿色三角表示执行完某一段程序(一般为子程序或者函数)后即将执行的代码
红色的数字表示刚刚修改过的变量值

33 楼

当你有一定基础之后,看编译器提供的帮助文档是最好的,对你的帮助是最大的。
当我看完 彭国伦 的《Fortran95 程序设》计后,知道了一些 Debug 常用的按钮,然后
看了一下 【美】 Chris H.Pappas & William H.Murray, III 的
《C++ 程序调试实用手册》,学到了很多调试的技巧,现在我一般看 CVF 的帮助文档,
这个最有用。
    当自己学会了 Debug 后,很多东西就勿需求助于别人了,所谓: 磨刀不误砍柴工!

34 楼

[em9]

35 楼

我照着楼主的提示做了,但设置断点好象不管用,用ctrl+F5,程序一直运行到结束,等待我关闭窗口,什么黄箭头,红字,绿色三角形都没看到.而且不管我把断点设在哪一句上,这是我的版本问题还是操作不对呢?我的试验程序如下:

read *,n
m=1
i=1
10 continue
m=m*i
i=i+1
if(i<=n) goto 10
print *,m
end

36 楼

怀疑你是在Release模式下?
如果是,改到Debug模式。

37 楼

向天发誓,我是在DEBUG模式下的.
我在BUILD下的configuration中点蓝的是win32 debug,看看没确定按钮,怕不牢靠,又在set default configuration中选择了win32 debug,这回看到了OK按钮,这才放心.但真正DEBUG时还是老方一帖.[em8][em10]

还有,按F5时跳出一个DOS框,WIN的窗口下分列LOCAL和WATCH两个子窗口,但运行完后DOS窗口和两个子窗口马上消失,并跳出一个"Preloaded symbols may not match 某某某文件名"的提示框,按下确定后一切归于平静.难道是没有预载symbols?

38 楼

我用的是CVF6.6,所以无法和MSFPS4完全类比。
感觉你是在Debug模式,只要能在断点中断就行了。

39 楼

为什么我的小黄箭头老指在机器码上,不指在程序上,这样我没法看错误,按了disassembly,显示程序了,但没黄箭头了,还是不知道错误在哪?
还有,想看数组1000个以上的值能看吗?

40 楼

第一个问题:这种情况,多半错误出在Windows的函数内,或者系统的函数内。你可是将断点设置在程序的前边,然后单步执行来定位出错语句。

第二个问题:能看到。

我来回复

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