FreePascal的集成调试器在FreePascal语言集成开发环境中,可以非常方便地调试程序。下面列出常用的调试方法:(1)暂停(Ctrl+Break):在程序运行过程中,可用Ctrl+Break暂停程序的运行,返回集成开发环境。此时,如果要程序继续执行,可用Ctrl+F9(即Run功能)继续运行程序;如果不需程序继续运行,可用Ctrl+F2复位(或F9重新编译),这样程序将不能被继续运行。(2)跟踪(F7):菜单Run|Traceinto功能能够逐步运行程序,即使在函数和过程中也能逐步运行。(3)跟踪(F8):菜单Run|Stepover功能能够使逐步运行主程序,即子程序中的语句将不会逐步执行。(4)执行到光标处(F4):把光标移到要执行到的语句行,再用F4(菜单Run|Gotocrusor)可让程序执行到该行暂停。(5)添加断点(CtrlF8):可用Debug|Breakpoint功能在光标处行设置程序断点,这样,当程序运行到这里时将自动暂停。清除断点也用此功能。(6)监视窗口列表:菜单Debug|Watches可以在程序未运行、运行暂停、运行结束后用此功能可以看到所有监视变量当前的值,利用键盘Insert键或CtrlF7向监视窗口中添加监视变量。(7)添加监视变量(Ctrl+F7):可用此功能打开Watches窗口,在此窗口中增加要查看的变量,这样,在用F7或F8或在程序暂停时,就能在此窗口中看到要查看的变量的值。(8)输出窗口:菜单Debug|Output可用此功能打开Output窗口,在此窗口中查看程序的运行显示。(9)集成环境中的窗口操作:FreePascal语言集成开发环境提供多窗口操作。如:用F3功能打开一个文件,再用F3功能打开一个文件,这时,就打开了两个窗口。此时,可用F6在各个窗口之间切换;用Alt+F3可把当前窗口关闭;用Ctrl+F5可进入改变窗口大小、位置状态,此时,可用光标键上下左右移动当前窗口,也可用Shift+光标键来改变窗口大小。这样,就能在屏幕上同时看到文件窗口、Watches窗口、Output窗口等。(10)记录文件运行编译指示(Ctrl+oo):因为Pascal语言是在集成环境中来运行程序,而各台计算机的集成环境设置有可能不同,这样就使得一个文件在一台机器上运行正常,而在另一台机器上运行不正常或不能运行。所以,一般都会在程序的第一行用Ctrl+oo键来记录下当前的程序运行环境,这时在屏幕当前行会出现两行语句,都是用“{}”括住,以“$”引导。一般在FreePascal中基本不用改变它的编译指示。先编一个比较简单的程序,看看程序是如何调试的,例2.2:programexp2_2;vari:integer;beginfori:=1to300dobeginifimod2=0thenifimod3=0thenifimod5=0thenwriteln(i);end;end.例2.2程序是输出300以内同时能被2,3,5整除的整数。现在开始调试。调试有多种方法,先介绍一种单步调试法,单步调试法就是模拟计算机的运算,把程序每一步执行的情况都反映出来。通常,有F7或F8这个功能来实现,如图:在按F9编译通过之后,不断地按F8,计算机就会从begin开始一步步地执行程序,直到执行到最后的“end.”为止。单步调试法不仅仅是模拟计算机运行,它的作用还有很多,不妨把上面的程序略微修改一下,再配合另外的一种调试的利器Watches窗口,就会发现单步调试法的用处。例2.3:programexp2_3;vari:integer;a,b,c:boolean;beginfori:=1to300dobegina:=false;b:=false;c:=false;ifimod2=0thena:=true;ifimod3=0thenb:=true;ifimod5=0thenc:=true;ifaandbandcthenwriteln(i);end;end.如图对例2.3,当用F8单步执行到b:fasle;语句时,单击菜单栏中Debug选项,里面有一项叫Watches的选项,单击它。在编辑窗口下面就会出现一个Watches窗口:Watches窗口可以让观察变量的变化情况,具体操作是在Watches窗口内按Insert键或用Ctrl+F7添加新的监视变量。这时,屏幕上弹出一个EditWatch窗口:在EditWatch中输入所需要观察的变量名,分别输入i,a,b,c这4个变量名,于是Watches窗口内就有如下的4个变量的状态:这时,继续按F8单步执行,通过Watches窗口会发现,这4个变量的状态随着程序的执行而不断变化,下面Watches窗口的状态表示这时i的值是6,a、b为真,c为假,也就是6可以被2、3整除而不能被5整除:这样就可以方便地知道执行每一步之后,程序的各个变量的变化情况,从而可以知道程序是否出错,在哪里出错,能方便及时地修改。单步调试法是在程序设计中最常用也是十分有效的调试方法。下面介绍另外的一种方法,断点调试法。所谓断点调试法,就是在程序执行到某一行的时候,计算机自动停止运行,并保留这时各变量的状态,方便程序设计者检查、校对。还是以前面求同时能被2,3,5整除的3000以内的自然数为例,具体操作如下:把光标移动到程序的第14行,按下Ctrl+F8,在此处添加断点,这时会发现,该行变成红色,表明该行已经被设置成断点行,当每次运行到第14行的时候,计算机都会自动停下来供程序设计者进行调试,调试修改完后按Ctrl+F9继续运行程序。断点调试法也要和Watches窗口配合使用,监视各个变量的变化。看下图可以发现一个问题,这时i等于6,可以被3整除,但b的值为false,这是什么原因?请记住,计算机是执行到断点行之前的一行,断点行并没有执行,所以这时b:=true这一句并没有执行。断点调试法行除了有以上用处之外,还有另外一个重要用处。它方便判断某个语句有没有执行或者是不是在正确的时刻执行,因为有时程序由于人为的疏忽,可能在循环或者递归时出现无法预料的混乱,这时候通过断点调试法,就能够判断程序是不是依照预期的顺序执行。