量上,停留一会就可以看 到变量的值。 还可以采用系统提供一种被称为 Watch 的机制来观看变量和表达式的值。在断点中 断状态下,在变量上单击右键,选择 Quick Watch, 就弹出一个对话框,显示这个变量 的值。 在该窗口中输入变量或者表达式,就可以观察变量或者表达式的值。注意:这个表达 式不能有副作用,例如“++”和“- -”运算符绝对禁
止用于这个表达式中,因为这个运 算符将修改变量的值,导致程序的逻辑被破坏。 ③ Variables(变量)窗口 单击调试(Debug)工具条上的“Variables“按钮弹出 Variables 窗口,显示所有当 前执行上下文中可见的变量的值。特别是当前指令语句涉及的变量,以红色显示。 ④ Memory(内存) 由于指针指向的数组,Watch 窗口只能显示第一个元素的值。为了显示数组的后续 内容,或者要显示一片内存的内容,可以使用 memory 功能。单击调试(Debug)工具条 上的“memory“按钮,就弹出一个对话框,在其中输入地址,就可以显示该地址指向的 内存的内容。 ⑤ Registers(寄存器) 单击调试(Debug)工具条上的“Registers”按钮弹出一个对话框,显示当前的所 有寄存器的值。
6
⑥ Call Stack(调用堆栈) 调用堆栈反映了当前断点处函数是被哪些函数按照什么顺序调用的。单击调试 (Debug)工具条上的.“Call stack”显示 Call Stack 对话框。在 Call Stack 对话框中显 示了一个调用系列,最上面的是当前函数,往下依次是调用函数的上级函数。单击这些函 数名可以跳到对应的函数中去。.
图 2-8 调试程序界面 (2) 单步执行调试程序 系统提供了多种单步执行调试程序的方法:可以通过单击调试(Debug)工具条上的 按钮或按快捷键的方式选择多种单步执行命令。 ① 单步跟踪进入子函数(Step Into,F11) ,每按一次 F11 键或按 ,程序执行一
条无法再进行分解的程序行,如果涉及到子函数,进入子函数内部; ② 单步跟踪跳过子函数(Step Over,F10) ,每按一次 F10 键,程序执行一行; Watch 窗口可以显示变量名及其当前值,在单步执行的过程中,可以在 Watch 窗口中加 入所需观察的变量,辅助加以进行监视,随时了解变量当前的情况,如果涉及到子函数, 不进入子函数内部; ③ 单步跟踪跳出子函数(Step Out,Shift+F11) ,按键后,程序运行至当前函数的 末尾,然后从当前子函数跳到上一级主调函数。 ④ 运行到当前光标处 当按下 CTRL+F10 后。程序运行至当前光标处所在的语句。 表 2-1 常用调试命令一览表 菜单 命令 Go Step Over Step Into Run to Cursor 工具条 按钮 F5 F10 F11 CTRL+F10 快捷键 说 明 继续运行,直到断点处中断。 单步,如果涉及到子函数,不进入子函数内部 单步,如果涉及到子函数,进入子函数内部 运行到当前光标处。
7
Step Out Stop Debugging
Shift +F11 F9 Shift+F5
运行至当前函数的末尾。 跳到上一级主调函数 设置/取消 断点 结束程序调试,返回程序编辑环境
图 2-9 设置断点调试程序 (3)设置断点调试程序 为方便较大规模程序的跟踪, 断点是最
常用的技巧。 断点是调试器设
置的一个代码位 置。当程序运行到断点时,程序中断执行,回到调试器。调试时,只有设置了断点并使程 序回到调试器,才能对程序进行在线调试。参考图 2-9。 ① 设置断点的方法 可以通过下述方法设置一个断点。 首先把光标移动到需要设置断点的代码行上, 然后 按 F9 快捷键或者单击“编译”工具条上的按钮 ,断点处所在的程序行的左侧会出现
一个红色圆点。参考图 2-9 和表 2-1。 还可以选择主菜单 “编辑 (Edit) 中的 ” “断点 (Breakpoints) 命令, “Breakpoints” ” 弹出 对话框,打开后点击“A 分隔符在 (Break at) ”编辑框的右侧的箭头,选择合适的位置 信息。一般情况下,直接选择 line xxx 就足够了,如果想设置不是当前位置的断点,