第九章 程序调试

合集下载

第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
....
  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
调试常用方法
动 态 调 试 方 法

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