VC的调试工作的解析--控制程序的运行

本文介绍了如何在调试模式下控制程序运行,包括使用Stepover、StepInto等命令,以及如何利用调试工具观察程序状态,例如查看变量值、内存值和寄存器值等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上面我们讲了如何设置各类断点,下面我们来介绍如何控制程序的运行。当我们从菜单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);
  1. 在Debug 菜单,选择Quick Watch命令,这时屏幕上将会出现Quick Watch 对话框;

     

    图4.20

  2. 在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 是进位标志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值