上面我们讲了如何设置各类断点,下面我们来介绍如何控制程序的运行。当我们从菜单Build到子菜单Start Debuging 选择Go 程序开始运行在Debug状态下,程序会由于断点而停顿下来后,可以看到有一个小箭头,它指向即将执行的代码。
上面我们讲了如何设置各类断点,下面我们来介绍如何控制程序的运行。当我们从菜单Build到子菜单Start Debuging 选择Go 程序开始运行在Debug状态下,程序会由于断点而停顿下来后,可以看到有一个小箭头,它指向即将执行的代码。
图4.12
随后,我们就可以按要求来控制程序的运行:其中有四条命令:Step over, step Into , Step Out ,Run to Cursor。
图4.13
在图4.13中:
Step over 的功能是运行当前箭头指向的代码(只运行一条代码)。
Step Into的功能是如果当前箭头所指的代码是一个函数的调用,则用Step Into 进入该函数进行单步执行。
Step Out的功能是如当前箭头所指向的代码是在某一函数内,用它使程序运行至函数返回处。
Run to Cursor的功能是使程序运行至光标所指的代码处。
查看工具的使用
调试过程中最重要的是要观察程序在运行过程中的状态,这样我们才能找出程序的错误之处。这里所说的状态包括各变量的值,寄存中的值,内存中的值,堆栈中的值 ,为此我们需要利用各种工具来帮助我们察看程序的状态。
- 弹出式调试信息泡泡(Data Tips Pop_up Information)。
当程序在断点停下来后,要观察一个变量或表达式的值的最容易的方法是利用调试信息泡泡。要看一个变量的值,只需在源程序窗口中,将鼠标放到该变量上,你将会看到一个信息泡泡弹出,其中显示出该变量的值。
图4.14
要查看一个表达式的值,先选中该表达式,仍后将鼠标放到选中的表达式上,同样会看到一个信息泡泡弹出以显示该表达式的值如图4.15所示。
图4.15
变量窗口(VARIABLE WINDOW)。
在VIEW 菜单,Debug window选 Variables window; 变量窗口将出现在屏幕上。其中显示着变量名及其对应的值。你将会看到在变量观察窗口的下部有三个标签:AUTO ,LOCAL,THIS 选中不同的标签,不同类型的变量将会显示在该窗口中。
- 观察窗口(WATCH WINDOW):
在VIEW 菜单,选择Debug window 命令,Watch window 子命令。这时变量窗口将出现在屏幕上。
图4.17
在图4.17的观察窗口中双击Name栏的某一空行,输入你要查看的变量名或表达式。
图4.18
回车后你将会看到对应的值。观察窗口可有多页,分别对应于标签Watch1,Watch2,Watch3等等。假如你输入的表达式是一个结构或是一个对象,你可以用鼠标点取表达式右边的形如 + ,以进一步观察其中的成员变量的值如图4.19。
图4.19
快速查看变量对话框(quick watch);
- 在Debug 菜单,选择Quick Watch命令,这时屏幕上将会出现Quick Watch 对话框;
图4.20
- 在Expression 编辑框中输入变量名,按回车;
图4.21
(3)在Current Value 格子中将出现变量名及其当前对应的值如图4.22: 图4.22
(4)如要改变该变量的值只需双击该变量对应的Name 栏,输入你要改变的值;
(5)如要把该变量加入到观察窗口中,点击Add watch 按钮;
(6)点击Close 按钮返回;
- 我们还可以直接查看内存中的值
(1)从View菜单中选取Debug windows 及Memory 子命令。Memory Window 出现;
(2)在Address 编辑框中输入你要查看的内存地址,回车。对应内存地址中的值将显示在Memory window 的窗口中。
图4.24
- 在调试过程中,有时我们需要查看或改寄存器中的值。我们只需:
(1)从View 菜单中选取Debug window 及 Registers 子选项。Registers 窗口出现。在Registers 窗口中,信息以 Register = Value 的形式显示,其中Register 代表寄存器的名字,Value 代表寄存器中的值。
图4.25
(2)如果你要修改某一个寄存器的值,用TAB键,或鼠标将光标移到你想改变的值的右边,然后输入你想要的值。回车返回。
在寄存器中,有一类特殊的寄存器称为标志寄存器,其中有八个标志位:
OV是溢出标志;
UP是方向标志;
EI是中断使能标志;
Sign 是符号标志,
Zero是零标志。
Parity是奇偶较验标志。
Carry 是进位标志。