第九章 程序调试

合集下载

第9章 程序调试

第9章 程序调试

9.2.1 设置运行断点 (2)
图9.4 设置断点
要清除已经设置的断点, 要清除已经设置的断点 , 只需将上述操作重复 一次, 断点便被撤销。 也可以打开【 调试】 菜单, 一次 , 断点便被撤销 。 也可以打开 【 调试 】 菜单 , 选择【清除所有断点】 选择【清除所有断点】。
9.2.1 设置运行断点 (3)
返回本节 返回首页
9.2 如何调试程序
9.2.1 设置运行断点 9.2.2 使用调试窗口 9.2.3 单步调试和跳跃调试
返回首页
9.2.1 设置运行断点 (1)
在设计状态,可以改变应用程序的设计和代码, 在设计状态,可以改变应用程序的设计和代码,但却不 能立即看到这些变更对程序运行所产生的影响; 能立即看到这些变更对程序运行所产生的影响;在运行程序 可以观察到程序的运行状态,但却不能直接改变代码。 时,可以观察到程序的运行状态,但却不能直接改变代码。 通过设置运行断点,VB系统可以中止程序的运行 系统可以中止程序的运行, 通过设置运行断点,VB系统可以中止程序的运行,使得程序 进入到中断模式。 中断模式下 进入到中断模式。在中断模式下,系统保留着发生中断时的 运行状态,包括各个变量和属性的设置值,供用户观察、 运行状态,包括各个变量和属性的设置值,供用户观察、分 同时,允许直接修改应用程序的代码,影响程序的运行。 析,同时,允许直接修改应用程序的代码,影响程序的运行。 设置运行断点通常有两种方法: 设置运行断点通常有两种方法:①在代码窗口中单击最 左边的灰色区域,使之出现一个棕色●标志, 左边的灰色区域,使之出现一个棕色●标志,对应的代码行 被同时加亮,则此处便设置了一个断点。 被同时加亮,则此处便设置了一个断点。②将光标移动到要 设置断点的代码行,打开【调试】菜单,选择【切换断点】 设置断点的代码行,打开【调试】菜单,选择【切换断点】, 亦可设置一个断点。 表示设置了两个断点的情况。 亦可设置一个断点。图9.4表示设置了两个断点的情况。

程序调试

程序调试

运行(时的) 运行(时的)错误
9
逻辑错误
程序运行后,得不到所期望的结果, 程序运行后,得不到所期望的结果,说明程序存在逻辑错 所期望的结果 误 (从语法角度来看,应用程序的代码可以是有效的,在运行 时也未执行无效操作,但还是产生了不正确的结果)。 例如:要计算 z=x*y 在代码中却写成 z=x+y 常见如:运算符使用不正确、语句的次序不对、循环语句的 常见如:运算符使用不正确、语句的次序不对 循环语句的 该语句既符合语法要求,又能够正确执行,只是产生了错 终值不正确及算法设计错误 及算法设计错误等 起 始、终值不正确及算法设计错误等。逻辑错误不产生出错信 误的计算结果。因此语句或程序运行的正确与否,只有通过测试 较难排除。需要仔细地阅读分析程序以及调试。 息,较难排除。需要仔细地阅读分析程序以及调试 应用程序和分析产生的结果才能检验出来。 判断是否逻辑错误常用黑 判断是否逻辑错误常用黑(白)盒测试法及分析。如用典型 盒测试法及分析。 测试用例, 实习6-15) 测试用例,e1=2.71828…… ?(实习 实习 ) 运行错误或逻辑错误需对代码测试及分析-如对表达式 运行错误或逻辑错误需对代码测试及分析 如对表达式 测试及分析
20
当在文本框Textl或Text2中输入小于零的数时,或在 Text2中输入l 时,都会产生一个运行期错误。对于该错误, 可以将代码改写成: Private Sub Commandl_Click() x = Val(Textl.Text) y = Val(Text2.Text) If x > 0 And y > 0 And y <> 1 Then z = Log(x)/Log(y) Text3.Text = z Else MsgBox “输入数据非法,请重新输入” End If End Sub

程序调试

程序调试
赵英良
1
常见错误
◦ 将分号、引号、逗号等符号写成中文的符号 ◦ 忘记写分号 ◦ 忘记写引号 ◦ 引号、小括号、大括号不成对出现 ◦ ...
2
#include<iostream> using namespace std; int main() {
cout<<"Hello World<<endl; return 0; }
3
4
在“编译器”标签下的结果中找第1个error(错误 ) 看后面的信息 遇见不熟悉的英文单词,查字典!!! 双击该错误(error) 在编辑窗口中光标指示处前后检查错误并改正
5
编译错误
• 编译时出现的错误 • 行时出现的错误 • 一般是程序写得不对,比如把加法写成了乘法,是计算的
方法(算法)出了错误
6
遇到错误不要怕, 找当头的来说话。 遇到英文查一查, 以后见面好说话。 双击错误前后看, 各个击破消灭它。
7

c语言程序调试的方法

c语言程序调试的方法

c语言程序调试的方法C语言是一种广泛应用的编程语言,但是在写程序的过程中难免会遇到各种错误和bug。

为了解决这些问题,程序调试是必不可少的环节。

本文将一步一步介绍C语言程序调试的方法,帮助读者更好地定位和修复错误。

一、理解程序调试概念及重要性(100-200字)程序调试是指通过识别、定位和修复软件中的错误(也称为缺陷或bug)来确保程序的正确运行。

调试是开发过程中的重要环节,它不仅可以解决已知的错误,还可以帮助我们理解代码和程序的执行过程。

在大型项目中,调试能够提高开发效率,降低错误的出现频率。

二、确定调试目标(200-300字)在开始调试之前,我们首先需要明确调试的目标是什么。

这有助于我们有条不紊地进行调试,并有效地利用时间。

调试目标可以是识别特定的错误、改进程序的性能或验证代码行为的正确性。

确定了调试目标后,我们就可以有针对性地采取相应的调试方法来达到目标。

三、检查代码和数据(200-300字)一旦我们明确了调试目标,下一步是检查代码和数据。

这个过程主要包括以下几个方面:1. 语法检查:通过编译器进行语法检查可以找到一些常见的语法错误,如括号不匹配、缺失分号等。

2. 变量和常量检查:检查变量和常量的命名是否规范、是否被正确初始化和赋值。

同时也要注意无效的内存引用、数组溢出等问题。

3. 函数调用:检查函数调用是否正确、参数是否传递正确,以及返回值是否被正确处理。

4. 数据流分析:通过追踪代码的执行过程,观察数据在程序中的流动,找出可能的错误。

通过仔细检查代码和数据,我们可以尽早发现问题,提高调试的效率。

四、使用调试工具(300-400字)在调试过程中,我们可以使用一些专门的调试工具来帮助我们定位和解决问题。

常用的调试工具有:1. 编译器提供的调试信息:在编译时,可以通过开启调试信息选项来生成包含调试信息的可执行文件。

在调试过程中,我们可以使用调试器来查看代码的执行过程、变量的值以及函数的调用关系,帮助我们定位问题所在。

第九章异常处理及程序调试

第九章异常处理及程序调试

例9-1:传统处理程序出错及Python处理 异常比较
• 编写函数getRatios(v1, v2)。 • 假定参数v1、v2是等长的数字列表,要求
返回一个列表,该列表包含v1[i]/v2[i] 有意义的值。
使用传统程序设计方法处理错误:
调用及执行:
使用Python异常处理机制实现:
执行:
对比之下,传统处理错误方法的缺点显而易见:
例9-7:自定义异常
执行结果:
5、assert语句的使用
• assert语句用于检测某个条件表达式是否 为真。
• assert语句又称为断言语句,即assert 认为检测的表达式永远为真。
• if语句中的条件判断都可以使用assert语 句检测。例如,检测某个元组中元素的个 数是否大于1,如果assert语言断言失败 ,会引发AssertionError异常。
• 程序难读,因此难以维护和修改 • 效率较低
二、异常的处理
1、try…except的使用 • try…except语句用于处理问题语句,捕
获可能出现的异常。
• try子句中的代码块放置可能出现异常的语 句,except子句中的代码块处理异常。当 异常出现时,Python会自动生成1个异常 对象,该对象包括异常的具体信息,以及 异常的种类和错误位置。
例如:试图打开不存在的文件
• 说明:出现了FileNotFoundError异常
例9-2:使用try…except捕获 FileNotFoundError异常
执行结果:
又如:
• 同样可以使用try…except语句来处理该异常。 try…except语句后还可以添加1个else子句, 当try子句中的代码发生异常时,程序直接跳转 到except子句;反之,程序将执行else子句。

第9章 程序调试

第9章 程序调试

2. 单步调试
单步调试即逐个语句或逐个过程地执行程序 每执行完一个语句或一个过程,就发生中断,因此可逐个语 句或逐个过程地检查每个语句的执行状况或每个过程的执行 结果
(1)单步语句调试
调用方法:使用 “调试” 菜单中的 “逐语句” 命令、或单 击F8 、或单击工具栏上的 “逐语句” 调试按钮,即可进行 特点:每执行一个代码行,系统就进入中断状态,此时可通 过“立即”窗口检查语句的执行情况。
二、 使用调试窗口 1. “本地”窗口:显示当前过程所有局部变量的当前 值
8
2. “监视”窗口:查看指定表达式(监视表达式)的 值
指定或增加监视表达式的方法有多种: 方法一:可使用 “调视” 菜单中的 “添加监视” 命令或 “编 辑监 视” 命令来指定或修改监视表达式
方法二:使用调试工具栏上的对应按钮
3. 中断模式
进入中断模式后,主窗口标题条中原来显示 “[设计]” 或 “[运行]” 地方用 “[中断]” 代替
6
一、中断状态的进入与退出
中断模式暂停程序的执行。 在中断模式下,可以检查程序代码,并可进行修改,也可以 检查数据是否正确,修改完程序后,可继续执行。
1 . 中断状态的进入
可以用以下四种方式进入中断模式:
13
作业:习题P2091源自、6 、914第9章
程序调试
本章主要内容
9.1 程序调试的基本概念 9.2 程序调试
2
9.1 程序调试的基本概念
一、错误类型 在VB程序设计中所产生的错误通常可分为三类。 1. 语法错误: 所谓语法错误是指由于违反了语言有 关语句形式或使用规则而产生的错误。 2. 运行错误: 运行错误是由于试图执行一个不可进 行的操作而引起的。 3. 逻辑错误: 逻辑错误是由于所编写的程序代码不 能实现预定的处理功能要求而产生的错误。

程序调试

程序调试
3.5 程序调试
为什么要调试?
问题 我的程序跟书上一样,怎么就不出结果呢? 我的程序没错啊,怎么不出结果啊? 我的程序运行结果不正确,如何找到错误? 原因 程序没有语法错误,不等于就没有语义错误。 要确保程序没错,必须对程序进行各种测试
程序调试入门
什么叫程序调试 所谓程序调试,是将编制的程序在正式投入实际运行前, 用手工或编译程序等方法修正语法错误和逻辑错误的过程。 通俗地说,程序调试就是查错与修改。
2.用程序调试器Debug调试程序
为了查找和修改程序中的逻辑错误, Visual C++ IDE
Integrated Development Environment
面向对象的集成开发环境
提供了重要的调试工具---Debug
Debug的启动
单击Build(组建)菜单 ---Start Debug(开始调试)子菜单 中的菜单项,可以启动 Debug
观察变量i的值的情况
注意在调试过程中
断点不能设置在空白行上面 添加断点和删除断点的方法: Step Into F10:Step over 设置了很多断点的时候,F5(Go)调试程序好 像更好用一点
控制程序的运行
Step over :运行当前箭头指向的代码(只运行一 条代码); Step Into :如果当前箭头所指的代码有函数的 调用,则用Step Into 进入该函数进行单步执行; Step Out:如当前箭头所指向的代码是在某一函 数内,用它使程序运行至函数返回处; Run to Cursor:使程序运行至光标所指的代码 处。
Run to cursor 执行到当前光标处,
注意观察箭头 便于理解记忆
调试程序的基本内容

程序调试和异常处理

程序调试和异常处理

water();
catch (}IOException E)
{
catch
//错误处{ 理代码
}
impurities.Show();
//错误} 处理代码
}
……. 可编辑ppt …….
try 和 catch 块 4-2
try { //程序代码 }
catch (IOException E) { //错误处理代码 }
权将无条件转到处理异常的部分代码 使用语句或表达式在执行过程中激发了某个异常的条
件,使得操作无法正常结束,从而引发异常
Try...Catch...Finally
可编辑ppt
try 和 catch 块 4-1
滤水器 杂质
过滤水
try filter_water()
{{
//程序代try码
}
{
//程序代码
System.Reflection.TargetException System.ArgumentNullException
System.FormatException System.IO.IOException
System.DivideByZeroException System.OverflowException
throw new InvalidNumberInput (UserInput + “不是有效输入 (请输入 1 和 100 之间的数字)”); } throw 可用来引发自定义异常“InvalidNumberInput”
可编辑ppt
try { //程序代码 }
catch { //错误处理代码 }
Result = Divident/Divisor
....

vb调试与错误处理

vb调试与错误处理

图9-1 “调试”工具栏
第九章 调试与错误处理
9.1.2 任务二 程序错误与调试示例
• 即使最资深的程序员也会犯错,因此,知道如 何对应用程序进行调试并找出错误是编程的重 要组成部分。但在学习有关调试过程的知识之 前,了解错误类型对我们找出并修复错误是很 有帮助的。 • 编程中可能出现的错误分为三类:编译错误、 运行时错误和逻辑错误。
第九章 调试与错误处理
• Visual Basic提供了一些用于错误处理的工具,包 括对象、函数和语句等。使用这些工具进行错误 处理的具体操作步骤如下: • (1)记录错误的类型和原因。 • (2)在引起错误的地方停止原定代码的执行, 强制程序转入到用户自定义的“错误处理程序段” 入口。 • (3)在错误处理程序段内,根据具体的错误进 行相应的处理。 • (4)如果问题能够解决,则在问题解决之后返 回原程序处继续往下执行,否则停止错误执行。
第九章 调试与错误处理
关闭“调用堆栈”窗口,结束程序的运行, 仔细检查Factotial部分的代码,发现“Factorial = x * Factotial(x - 1)”代码部分有错误,将函数 名“Factotial”错误的写成了“Factorial”。虽然 是一个小小的拼写错误,却为我们增加了多少 调试的工作!改正后再次运行程序,输入数字5, 单击“计算阶乘”按钮,这次我们观测程序结 果,发现如图9-23所示的结果是正确的了,至 此,本程序才算是完全正确的程序了。
第九章 调试与错误处理
下面以一个实例来看看这些调试工具的使用方法。 新建一个工程,该程序的功能是,用户在文本框中 输入一个介于0~20之间的数字,程序能计算这个数的 阶乘并返回结果。
按下面的步骤建立这个程序: (1)打开Microsoft Visual Basic 6.0中文版。 (2)在弹出的对话框中,选择“标准EXE”选项。 (3)单击工具栏中的Label标签控件,在Form1窗体 上绘制一个标签,并将其Caption属性改为“请输入 一个整数(0-20之间)”。

36第9章 程序调试与异常处理PPT课件

36第9章 程序调试与异常处理PPT课件
12
9.1 程序错误与程序调试
9.1.2 程序调试
2. 环境调试设置
• Visual 环境调试设置,是通过【选项】对 话框(从“工具”菜单选择“选项”命令)进行。此处的 调试设置影响所有项目,包括常规、本机、编辑并继续、 符号和实时五个方面的调试设置,如图9.3所示。
9
9.1 程序错误与程序调试
9.1.2 程序调试
为了帮助编程人员在程序开发过程中检查程序的语法、 逻辑等是否正确,并且根据情况进行相应修改,Visual 2008提供了一个功能强大的调试器。在调试 模式下,编程人员可以仔细观察程序运行的具体情况,从 而对错误进行分析和修正。
1. 的工作模式
7
9.1 程序错误与程序调试
9.1.1 程序错误 2.运行时错误
• 当程序执行时,如果产生异常,就会出现提示错误信息 的对话框。
•【例9-1】 被零除异常。
• 针对运行时错误的类型,编程人员应该在开发阶段确认 是否可能发生异常;更常用的捕捉异常的方法,则是利用 try-catch-finally结构来处理。
错误描述提示。
• 【错误列表】窗口也可以提示错误信息。选择“视图” 菜单下的“错误列表”命令,可以显示【错误列表】窗口。 在【错误列表】窗口中包含错误描述、发生错误的文件路 径以及错误所在的行号等。其中的错误描述,与把鼠标指 针指向“代码编辑器”中带波浪线的那部分代码时所看到 的信息一样,如图9.1所示。
8
9.1 程序错误与程序调试
9.1.1 程序错误
3. 逻辑错误
• 逻辑错误是程序算法的错误,指应用程序运行所得的结 果与预期不同。如果产生这种错误,程序不会发生任何程序 中断或跳出程序,而是一直执行到最后,可能会有结果,但 是执行结果是不对的。这是最难修改的一种错误,因为发生 的位置一般都不明确。逻辑错误通常不容易发现,常常是由 于其推理和设计算法本身的错误造成的。 • 这种错误的调试是非常困难的,因为程序员本身认为它 是对的,所以只能依靠细心的测试以及调试工具的使用,甚 至还要适当地添加专门的调试代码来查找出错的原因和位置。

程序调试及错误观察CC进阶教程

程序调试及错误观察CC进阶教程

03
调试工具的使用
gdb的使用
01
GDB简介
02
启动GDB
GNU调试器(GNU DeBugger,简称 GDB)是一个功能强大的Unix/Linux 下的程序调试工具。它可以用来调试C、 C等语言编写的程序,支持各种断点、 观察点、表达式求值等功能。
在命令行中输入`gdb`命令即可启动 GDB,然后通过`file`命令加载需要调 试的程序。
程序性能下降或运行缓慢 内存泄漏或资源耗尽
错误的表象与原因
01
•·
02
程序崩溃可能是由于空指针引用、数组越界等原因
03
输出结果不符合预期可能是逻辑错误、数据类型不 匹配等导致
错误的表象与原因
性能问题可能与算法复杂度、内存管 理不当等有关
内存泄漏和资源耗尽可能是由于未正 确释放资源或内存管理不当
错误的定位与识别
观察变量值
01
在调试过程中,观察变量值的 变化是非常重要的。通过观察 变量的值,可以了解程序在运 行过程中的状态和行为。
02
使用调试器提供的变量观察功 能,可以在调试过程中实时查 看变量的值,以便及时发现异 常和错误。
03
观察变量值可以帮助程序员理 解代码的逻辑和行为,从而快 速定位和解决问题。
使用断点
01
断点是在代码执行过程中暂停执行的标记点,通常用于调 试目的。
02
在调试过程中,可以在关键位置设置断点,以便在程序执 行到该位置时暂停,并检查变量的值和程序的执行状态。
03
使用断点可以帮助程序员快速定位问题,并更好地理解程 序的执行流程。
单步执行代码
01
单步执行代码是指在调试过程中逐行执行代码,以便

程序调试与创建可执行文件课件

程序调试与创建可执行文件课件

调试与优化可执行文件的性能和功能
性能分析工具
使用性能分析工具,如性能剖析器、计时器等,分析可执行文件的 运行效率和瓶颈。
代码优化
根据性能分析结果,对代码进行优化,提高可执行文件的运行效率 。
功能测试与验证
通过功能测试和验证,确保可执行文件的功能正确性和稳定性。
05
实际案例分析
案例一:一个简单的程序调试案例
代码审查
代码审查是一种通过人工审查代 码来发现和修复错误的程序调试 技术。通过代码审查,开发人员 可以发现代码中的逻辑错误、语 法错误等问题,并进行修复和优 化。
02
程序调试过程
调试前的准备
确定问题
明确需要解决的问题或错误,并了解问题的表 现和影响。
环境搭建
配置所需的开发环境,包括编译器、调试器等 。
通过程序调试可以快速定位和修 复错误,从而提高开发效率,缩 短开发周期。
常见的程序调试工具和技术
01
调试器
调试器是一种用于程序调试的 工具,它可以在程序运行时实 时监控程序的执行状态,包括 变量的值、内存的使用情况、 堆栈跟踪等。常见的调试器有 GDB、Visual Studio Debugger等。
概念
可执行文件是包含计算机程序代码的 文件,可以在操作系统上直接运行。
作用
可执行文件是程序开发的重要成果, 它使得程序能够脱离开发环境独立运 行,方便用户使用。
如何创建可执行文件
编译源代码
将源代码文件(如C、C、Java等)通过编 译器转换成机器码。
链接库文件
将编译后的目标文件链接成可执行文件,需 要引入必要的库文件。
案例三:一个创建可执行文件的案例

通过一个示例程序,介绍如何使用编译器 将源代码编译成目标文件,并使用链接器 将目标文件链接成可执行文件。同时,解 释可执行文件的格式和特点。

程序调试内容

程序调试内容

程序调试内容程序调试内容一、程序调试的基本概念1、程序调试是指为了解决程序运行过程中出现的各种问题,进行程序的调试,让程序按照原来设定的要求正确的运行。

2、程序调试可以分为两大类:编译错误调试和运行错误调试。

编译错误调试是指在编译过程中,出现的各种编译错误;而运行错误调试是指在程序运行的过程中出现的各种运行错误。

3、程序调试是一个比较复杂的过程,因为它涉及到的技术非常广泛,包括编程语言、程序设计、程序优化、调试工具、调试技巧等。

二、程序调试的步骤1、程序调试的步骤主要分为三个:问题分析、调试实施和优化收尾。

2、首先进行问题分析,根据程序出现的问题进行分析,并尝试找出原因,找到可能出现的问题,才能调试程序。

3、其次进行调试实施,根据问题分析的结果,进行措施,编写代码,改正代码,调试程序。

4、然后进行优化收尾,在程序调试完毕之后,进行一些优化,提高程序的运行效率,减少程序的出错率。

三、程序调试中的常用工具1、调试器:调试器是一种功能强大的程序工具,主要用来检测程序的运行过程中出现的各种故障,分析程序逻辑错误和运行错误,并可以调整和修改程序代码,从而解决程序出现的各种问题。

2、跟踪工具:跟踪工具是用来查看程序执行的运行信息的工具,它可以显示程序的运行状态,查看程序的各个变量的值,方便定位程序状态和运行结果。

3、调试程序:调试程序是一种特殊的程序,主要用来检测程序的各种问题,调试程序可以检测出程序执行过程中出现的编译错误、程序逻辑错误等。

4、日志分析工具:日志分析工具是一种用来查看程序运行日志信息的工具,它可以显示程序的运行过程,帮助分析程序的运行轨迹,从而找出程序出现的问题,从而更加容易地解决问题。

程序调试

程序调试

方法
一,简单调试方法:步骤 1,在程序中插入打印语句、优点是能够显示程序的动态过程,比较容易检查源程序的有关信息。缺点是效率 低,可能输入大量无关的数据,发现错误带有偶然性。 2,运行部分程序。有时为了测试某些被怀疑有错的程序段,却将整个程序反复执行许多次,在这种情况下, 应设法使被测程序只执行需要检查的程序段,以提高效率。 3,借助调试工具。大多数程序设计语言都有专门的调试工具,可以用这些工具来分析程序的动态行为。 二,回溯法排错。确定最先发现错误症状的地方,人工沿程序的控制流往回追踪源程序代码,直到找到错误 或范围。 三,归纳法排错。是一种系统化的思考方法,是从个别推断全体的方法,这种方法从线索(错误征兆出发), 通过分析这些线索之间的关系找出故障。主要有4步: (1)收集有关数据。收集测试用例,弄清测试用例观察到哪些错误征兆,以及在什么情况下出现错误等信息。 (2)组织数据。整理分析数据,以便发现规律,即什么条件下出现错误,什么条件下不出现错误。
第三步,使用计算机中的连接程序,把翻译好的计算机语言程序连接起来,并扶植成一个计算机能真正运行 的程序。在连接过程中,一般不会出现连接错误,如果出现了连接错误,说明源程序中存在子程序的调用混乱或 参数传递错误等问题。这时又要用编辑程序对源程序进行修改,再进行编译和连接,如此反复进行,直至没有连 接错误为止。
通常利用程序语言提供的调试功能或专门的调试工具来分析程序的动态行为。一般程序语言和工具提供的调 试功能有检查主存和寄存器;设置断点,即当执行到特定语句或改变特定变量的值时,程序停止执行,以便分析 程序此时的状态。
谢谢观看
分类
静态调试
动态调试
可以采用如下两种方法:
(1)输出寄存器的内容。在测试中出现问题,设法保留现场信息。把所有寄存器和主存中有关部分的内容打 印出来(通常以八进制或十六进制的形式打印),进行分析研究。用这种方法调试,输出的是程序的静止状态 (程序在某一时刻的状态),效率非常低,不得已时才采用。

程序调试

程序调试

调试程序1 调试程序的基本知识程序编译正确后,能够执行,但不能保证执行的结果正确,这一般是由于程序运行时的逻辑错误导致的。

为了能解决编程上的逻辑错误,需要掌握一定的技巧,训练一些基本能力。

本文介绍的单步跟踪程序,是同学们必须掌握的最基本的能力。

以后大家学习别的编程语言,这个能力的要求是不变的,因此希望同学们能跟着本实验指导书,训练好这个能力。

要单步跟踪程序的执行流程,首先要了解以下知识。

1) 工具栏上的“编译微型条”。

位置见图1的箭头所指的方框,将方框中的按钮单独列出,见图2。

图1 工具栏上的编译微型条图2 编译微型条工具栏上的“编译微型条”共包含六个按钮,各按钮(从左至右)的功能为:○1:编译。

对应菜单“组建”->“编译”命令,快捷键为“Ctrl+F7”。

○2:组建。

对应菜单“组建”->“组建”命令,快捷键为“F7”。

○3:停止组建。

快捷键为“Ctrl+Break”。

这个按钮通常为灰色(即不可用),只有在组建的过程中才可用。

而通常我们不需要人工停止组建,所以这个按钮我们通常不使用。

○4:执行。

对应菜单“组建”->“执行”命令,快捷键为“Ctrl+F5”。

以上的四个功能我们主要使用编译、组建、执行,这三个功能我们在前面已经接触到。

本节主要介绍另外两个功能:○5:去。

对应菜单“组建”->“开始调试”->“去(Go)”命令,快捷键为“F5”。

○6:插入/移除断点。

快捷键为“F9”。

如果在工具栏上找不到“编译微型条”,可在工具栏上点右键,将弹出菜单,如图3所示。

在菜单中,将“编译微型条”前的勾勾上即可。

图3 自定义工具栏2) 概念:断点(breakpoint)。

如果程序运行出错,为了查找错误,通常的做法是在程序的某一行或某几行设置断点,当使用调试方式执行程序(即点)时,程序执行将在断点处停下来,此时程序员可以单步执行程序(即一行一行执行),也可查看变量的值。

要在某行程序设置断点,可将光标先移到该行,然后点即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

25
单步调试与调试窗口的结合
程 序 调 试 的 方 法

总结:单步调试时调试窗口使用方法:
从本地窗中检查当前所有变量的值 在监视窗口中添加监视表达式可查看指定 变量或表达式的值 说明:
鼠标移至变量名上或选定表达式后稍作停留, 会出现变量或表达式当前值
前一页 下一页
休息
26
调试窗口
程 序 调 试 的 方 法
断点是用户在程序中插入的标记,若干个 断点将程序分成几个部分 正常或调试方式执行程序至断点时会自动 进入中断状态 用户使用调试工具判断错误是否出现在此 段程序
前一页 下一页
休息
16
单步调试
程 序 调 试 的 方 法

单步调试方法:
启动调试
从第一句开始单步执行程序
菜单:调试-逐语句
跳过肯定无错语句
光标移至第一句要调试语句 选菜单:调试-运行到光标处
Debug.Print 方法
语法与Print 语句相似,在程序运行同时输出多 个变量、属性或表达式的值
前一页 下一页
休息
30
带通用过程的程序调试
程 序 调 试 的 方 法

正常开始程序调试 箭头位于调用语句行时选择是否跟踪进过程
逐语句(F8):单步执行跟踪进过程 逐过程(Shift+F8) :单步执行不进过程
注意:
当前窗体可省略窗体名 窗口中的内容可以编辑 在立即窗口中几乎可执行程序所有语句,但必 须写在一行上。
前一页 下一页
休息
29
调试窗口
程 序 调 试 的 方 法

立即窗口
程序运行使用-利用Debug对象
Debug是系统内部对象,不需定义,用于在运行 状态下在立即窗口中显示要测试的变量、属性和 表达式的值
前一页 下一页
休息
7
VB环境设置

通用
错误捕获区-设置程序运行出错时中断的 位置。 窗体网格设置区-设置窗体上网格特性。 编译区-设置编译程序工作方式。 显示工具提示-设置光标停留在工具栏按 钮上时显示提示。

编辑器格式-用于设置程序代码文本 颜色、字体大小等
休息
前一页 下一页
8
VB环境设置

可连接的
设置哪些工作窗口可连接在一起。
环境
窗口。 启动程序时-设置运行程序时是否先保存 已修改程序。 显示模板

高级-多工程设置
休息
9
前一页 下一页
第九章 程序调试
§9.2 程序调试的方法
中断状态
程 序 调 试 的 方 法
程序的调试大部分在中断状态下进行 中断状态指程序在中途暂停执行的状 态 中断状态下用户可以通过查看变量及 属性的当前值是否正确,从而查出错 误 中断状态下亦可修改程序重新执行

判断错误方法二:使用调试窗口
调试窗口可以显示当前变量及表达式的值, 将其与手算得到的正确值进行比较即可查 出错误 打开方法:调试工具栏或“视图”菜单 分类及功能:
本地窗口:显示当前过程所有局部变量的值 监视窗口:显示指定监视表达式的当前值 立即窗口:可输入代码并立即用当前变量值执 行,亦可用Print方法显示变量或表达式的值
前一页 下一页
休息
12
VB调试工具

调试工具
调试菜单
启动并控制各种调试方法
调试工具栏
快速方便控制VB调试过程
调试窗口
VB提供三个窗口:本地、立即和监视窗口用 于监控变量等对象值的变化以调试程序
断点
使程序分段执行以查找错误位置
前一页 下一页
休息
13
调试使用的工具
程 序 调 试 的 方 法

“调试”菜单-启动并控制调试

监视窗口
监视表达式的修改
选中要修改的监视表达式 菜单:“调试”-“编辑监视”
快速监视
功能:快速显示选定的表达式或变量的值且不 需要事先添加监视表达式 菜单:“调试”-“快速监视” 说明:单击“添加”按钮即可将此表达式添加 为监视表达式
前一页 下一页
休息
27
调试窗口
程 序 调 试 的 方 法

例:求n! (ex9.2-3)
前一页 下一页
休息
32
带通用过程的程序调试
程 序 调 试 的 方 法
Call sort(score, num) For i = 1 To num Text1.Text = Text1.Text & score(i) & " " Next i t = num c = InputBox("输入要删除的数:") Call find( score, num, c ) If t = num Then Text2.Text = c & "不在本数列中!" Else For i = 1 To num Text2.Text = Text2.Text & score(i) & " " Next i End If End Sub
Option Base 1 Private Sub Form_click( ) Dim i As Integer, c As Integer Dim num As Integer Dim score( ) As Integer Randomize num = InputBox("数列项数") ReDim score( num ) For i = 1 To num score( i ) = Int( 20*Rnd )+1 Next i
前一页 下一页
休息
20
调试窗口
程 序 调 试 的 方 法

本地窗口
仅在中断状态可用 功能:以列表方式显示出当前过程中所有 过程级变量名及值 其中当前窗体模块用“Me”表示 单击Me前加号或减号可展开或折叠窗体 树,以显示窗体属性及窗体上控件及属性
前一页 下一页
休息
21
调试窗口
程 序 调 试 的 方 法

测试时可加入语句:
Debug.Print i, "!="; num
前一页 下一页
休息
28
调试窗口
程 序 调 试 的 方 法

立即窗口
中断状态时使用
中断状态下可在立即窗口中用Print 语句了解 当前程序中各个变量、对象属性和表达式的值。 一般形式: Print 输出项1,输出项2...... 或 ?输出项1,输出项2......
前一页 下一页
程 序 调 试 的 方 法
单步调试
程 序 调 试 的 方 法

单步调试方法:
纠正错误
当变量值和程序走向与预计不同时考虑本句出错
注意:箭头所指为即将执行语句
可直接从编辑窗口改正错误
注意:最好先停止调试再纠正错误
结束调试
停止程序运行
前一页 下一页
休息
19
调试窗口
程 序 调 试 的 方 法

逻辑错误
逻辑错误是语法上正确,运行时也无无效 操作,但程序得不到正确结果的错误。一 般由算法设计缺陷或程序考虑不周引起。
前一页 下一页
休息
4
程序调试方法的分类

静态调试(手工调试)
程序员逐句检查错误。
动态调试
利用VB集成环境提供的调试工具逐步执 行程序以找到错误

本节程序调试主要是指动态调试
前一页 下一页
休息
23
调试窗口
程 序 调 试 的 方 法

监视窗口
功能:列出所有监视表达式及值 监视表达式
事先设定,随程序运行实时变化的表达式,利 用它可以监视程序中变量、属性或函数调用等 的值的变化
监视表达式添加方法
菜单:“调试”-“添加监视” 快捷菜单中选“添加监视”
前一页 下一页
休息
24
监视表达式的添加
Visual Basic程序设计
第九章 程序调试
本章主要内容
程序调试的基本概念 程序调试的方法

前一页 下一页
休息
2
第九章 程序调试
§9.1 程序调试的基本概 念
VB错误的类型

语法错误
语法错误由于不正确使用代码而产生,一 般VB编译器可查出。

运行错误
运行错误是程序运行中执行了无法执行的 语句(如除数为0)产生的错误。

前一页 下一页
休息
11
中断状态
程 序 调 试 的 方 法

中断状态的进入
自动进入:程序运行出错时,自动进入中 断状态 用户中断:单击“中断” 按钮,或菜单 “运行”-“中断”或按键“Ctrl+Break” 断点中断:在程序代码中可设置断点语句, 程序执行到此自动进入中断状态 单步调试:每次执行一步程序就暂停进入 中断状态
逐语句:每次只执行一个语句(F8) 逐过程:遇到过程调用语句时,跳过过程 (Shift+F8) 运行到光标处:执行到光标所在处中断 (Ctrl+F8) 跳出:一次性执行完当前过程剩余的所有 语句(Ctrl+Shift+F8)
前一页 下一页
休息
14
程序调试工具栏
程 序 调 试 的 方 法

VB调试工具栏
打开方法:“视图”-“工具栏”-“调 试” 右击任意工具栏-“调试”
中断 逐语句 逐过程 立即窗口
快速监视 停止 切换断点 跳出 本地窗口 监视窗口
运行程序
前一页 下一页
休息
15
调试常用方法
动 态 调 试 方 法

单步执行法-用于一般程序
相关文档
最新文档