软件调试(30)
数字可视对讲调试软件操作说明

调试软件操作说明可视对讲调试软件是一个免安装的软件,在文件夹“可视对讲调试软件”里面有一个SetDebug.exe文件,双击运行,即可进入调试软件进行调试。
目录1.软件主界面--------------------------------------------22.查找--------------------------------------------------33.导出--------------------------------------------------44.清除--------------------------------------------------55.进入对讲界面------------------------------------------66.管理中心配置------------------------------------------77. 连通测试---------------------------------------------88.呼叫/监视---------------------------------------------109.管理中心地址设置--------------------------------------1210.围墙机地址设置---------------------------------------1311.单元门口机地址设置-----------------------------------1412. 室内分机地址设置------------------------------------1513.参数设置---------------------------------------------1614.多路设/撤防护----------------------------------------1815. 音量大小调节----------------------------------------1916. 语言设置--------------------------------------------2017. 发送信息--------------------------------------------2118. 下载ID卡-------------------------------------------2219.读取软件版本号---------------------------------------2320. 复位管理密码----------------------------------------2421. 远程重新重启----------------------------------------2522.门口机一键地址呼叫设置-------------------------------2623.半双工平衡值设置-------------------------------------2724.按键快速呼叫属性设置---------------------------------2825.按键快速呼叫地址设置---------------------------------2926.电梯联动地址设置-------------------------------------30附录1.电脑IP地设置-----------------------------------31附录2.电脑多IP地址设置-------------------------------351.软件主界面通过菜单在界面上设置不同的功能右击功能菜单步骤:(1)点击“查找”可以弹出所有连接设备的编号,类型,MAC地址,子网掩码,网关地址,服务器地址,机器描述。
软件工程期末复习题答案

软件工程期末复习题一、选择题1.软件测试的目的是()。
A)试验性运行软件B)发现软件错误C)证明软件正确D)找出软件中全部错误2.软件测试中白盒法是通过分析程序的()来设计测试用例的。
A)应用范围B)内部逻辑C)功能D)输入数据3.黑盒法是根据程序的()来设计测试用例的。
A)应用范围B)内部逻辑C)功能D)输入数据4.为了提高软件测试的效率,应该()。
A)随机地选取测试数据B)取一切可能的输入数据作为测试数据C)在完成编码以后制定软件的测试计划D)选择发现错误可能性最大的数据作为测试用例5.与设计测试用例无关的文档是()。
A)项目开发计划B)需求规格说明书C)设计说明书D)源程序6.测试的关键问题是()。
A)如何组织软件评审B)如何选择测试用例C)如何验证程序的正确性D)如何采用综合策略7.软件测试用例主要由输入数据和()两部分组成。
A)测试计划B)测试规则C)预期输出结果D)以往测试记录分析8.成功的测试是指运行测试用例后()。
A)未发现程序错误B)发现了程序错误C)证明程序正确性D)改正了程序错误9.下列几种逻辑覆盖标准中,查错能力最强的是()。
A)语句覆盖B)判定覆盖C)条件覆盖D)条件组合覆盖10.在黑盒测试中,着重检查输入条件组合的方法是()。
A)等价类划分法B)边界值分析法C)错误推测法D)因果图法11.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是()。
A)系统功能B)局部数据结构C)重要的执行路径D)错误处理12.软件测试过程中的集成测试主要是为了发现()阶段的错误。
A)需求分析B)概要设计C)详细设计D)编码13.不属于白盒测试的技术是()。
A)路径覆盖B)判定覆盖C)循环覆盖D)边界值分析14.集成测试时,能较早发现高层模块接口错误的测试方法为()。
A)自顶向下渐增式测试B)自底向上渐增式测试C)非渐增式测试D)系统测试15.确认测试以()文档作为测试的基础。
CSM300EA远动软件调试方法

CSM300EA远动软件调试方法密钥的获取4U机箱的CSM300E装置的密钥存放在/300etmp路径下,只需把它取出,改名为key.sys文件,存放到/300e/config路径下即可,对于工控机,需要在所有硬件均配置完毕后运行/300e/bin下的getcode,获取信息代码文件code.txt,然后将code.txt送交总公司密钥管理人员,获取密钥文件key.sys,然后将其放到/300e/config 路径下,就可以正常运行所有进程。
需要特别注意的是,有部分需要下载的批处理文件(例如runmaster),每一行的末尾可能被Windows 系统自动加入了^M,即回车换行符;下载到QNX的目标系统后,执行此批处理文件将不成功。
为解决此问题,可使用UltraEdit软件的FTP功能,将此文件上载,然后重新通过FTP下载到原目标机,即可消去多余的^M,使批处理文件可以正常执行。
,以下几组程序是必不可少的:1) 实时数据库管理进程dbms;2) 通信接口硬件驱动程序sermon、serpc、sermoxa、sertcp等;3) 内部规约处理程序lon、lonctrl、lonbuf、lonread、netread等;4) LonWorks网络接口程序lonman;5) 以太网接口程序netman;6) 对时遥控切换程序selector;7) 虚拟遥信及开入开出端口管理进程iomon;根据需要还要选择:1)具体规约程序,从qcdt、qu4f、q101、q104、q1801、qrp570、qdisa、qdnp、q476、qcdc等选择;2)其它应用程序,如GPS、切换程序alter_main(或alter_chnl)和五防服务程序等。
3)液晶模块管理程序lcdman310或lcdman320。
(分别在CSM-310E或CSM-320E装置上运行)以下是一般所需的定值文件:1) dbms.cfg ——实时数据库定值文件;2) 远动转发定值文件zfyc/yx/ym/yk/yt/hb/soex.dat (x=0,1,2,3…)。
安全关键软件调试系统的设计与实现

信18与电1EChina Computer & Communication敬件卄亥与龛用2021年第6期安全关键软件调试系统的设计与实现陈勇(中国航发控制系统研究所,江苏无锡 214063 )摘 要:软件调试是软件开发过程中不可缺少的重要阶段。
在航空安全关键软件领域,一般选取嵌入式系统作为软件运行的平台,软件调试功能作为操作系统的一个功能,为满足适航需求,需要经过非常严格的认证,从而极大增加了 软件产品的开发及验证成本.笔者设计了一种适用于安全关键软件领域、独立于操作系统的调试系统,在不增加适航认 证成本的前提下,能够较好地满足软件开发过程中的调试需求.关键词:软件调试;嵌入式系统;调试中图分类号:TP311 文献标识码:A 文章编号:4003-9767 (2021) 06-074-02Design and Implementation of Debugging System in Safety-Critical Software AreaCHEN Yong(AECC Aero-Engine Control System Institute, Wuxi Jiangsu 214063, China)Abstract : Software debugging is an indispensable and important stage in the software development process. In the field of aviation safety-critic a l software, the embedded system is generally selected as the platform for software operation, and the softwaredebugging function is used as a function of the operating system. In order to meet the airworthiness requirements, very strict certification is required, which greatly increases the development of software products. And verification cost. The author designed adebugging system that is suitable for safety-critical software fields and is independent of the operating system, which can better meet the debugging needs in the software development process without increasing the cost of airworthiness certification.Keywords: software debugging; embedded system; debugging0引言嵌入式系统具有低功耗、可靠性高、面向特定应用和可按需灵活定制等优点,已广泛应用在通信、电子产品、汽车电 子、智能机器、工业控制、卫星导航、医疗、航空航天等领域。
软件工程期末试题及答案

软件工程期末试题及答案(六)选择题1.软件测试的目的是()。
A)试验性运行软件B)发现软件错误C)证明软件正确D)找出软件中全部错误2.软件测试中白盒法是通过分析程序的()来设计测试用例的。
A)应用范围B)内部逻辑C)功能D)输入数据3.黑盒法是根据程序的()来设计测试用例的。
A)应用范围B)内部逻辑C)功能D)输入数据4.为了提高软件测试的效率,应该()。
A)随机地选取测试数据B)取一切可能的输入数据作为测试数据C)在完成编码以后制定软件的测试计划D)选择发现错误可能性最大的数据作为测试用例5.与设计测试用例无关的文档是()。
A)项目开发计划B)需求规格说明书C)设计说明书D)源程序6.测试的关键问题是()。
A)如何组织软件评审B)如何选择测试用例C)如何验证程序的正确性D)如何采用综合策略7.软件测试用例主要由输入数据和()两部分组成。
A)测试计划B)测试规则C)预期输出结果D)以往测试记录分析8.成功的测试是指运行测试用例后()。
A)未发现程序错误B)发现了程序错误C)证明程序正确性D)改正了程序错误9.下列几种逻辑覆盖标准中,查错能力最强的是()。
A)语句覆盖B)判定覆盖C)条件覆盖D)条件组合覆盖10.在黑盒测试中,着重检查输入条件组合的方法是()。
A)等价类划分法B)边界值分析法C)错误推测法D)因果图法11.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是()。
A)系统功能B)局部数据结构C)重要的执行路径D)错误处理12.软件测试过程中的集成测试主要是为了发现()阶段的错误。
A)需求分析B)概要设计C)详细设计D)编码13.不属于白盒测试的技术是()。
A)路径覆盖B)判定覆盖C)循环覆盖D)边界值分析14.集成测试时,能较早发现高层模块接口错误的测试方法为()。
A)自顶向下渐增式测试B)自底向上渐增式测试C)非渐增式测试D)系统测试15.确认测试以()文档作为测试的基础。
软件工程大作业(2)(答案)

软件工程大作业(2)(答案)软件工程作业第二部分一、填空1.结构化分析方法的分析策略是___自顶向下逐步求精_______。
2.衡量模块独立性的两个定性标准是_耦合性与内聚性________。
3.软件集成测试的方法主要有两种,它们是___渐增式与非渐增式测试_______。
4.继承性是子类自动共享其父类的__数据结构和方法____________机制。
5.在面向对象方法中,人们常用状态图描述类中对象的___动态行为________。
6.规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称该软件为____容错_____软件。
7.可行性研究的目的是用最小的代价在尽可能短的时间内确定该软件项目_是否值得开发_。
8.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是__功能需求_。
9.软件生存周期中时间最长、花费的精力和费用最多的一个阶段是__维护_____阶段。
10.对象之间进行通信叫做__消息_____。
11.计算机辅助软件工程这一术语的英文缩写为_CASE_______。
12.McCall提出的软件质量模型包括______11________个软件质量特性。
13.为了便于对照检查,测试用例应由输入数据和预期的___输出结果____两部分组成。
14.软件结构是以____模块__________为基础而组成的一种控制层次结构。
15.结构化语言(PDL)是介于自然语言和____形式语言____之间的一种半形式语言。
16.软件概要设计的主要任务就是__软件结构的设计______。
17.结构化程序设计方法是使用___三种基本控制结构____构造程序。
18.软件开发是一个自顶向下逐步细化和求精过程,而软件测试是一个__自底向上或相反顺序 _____集成的过程。
19.在建立对象的功能模型时,使用的数据流图中包含有处理、数据流、动作对象和__数据存储对象_____。
二、选择1.UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( C )A、基于瀑布模型的结构化方法B、基于需求动态定义的原型化方法C、基于对象的面向对象的方法D、基于数据的数据流开发方法2.面向对象的开发方法中,(B)将是面向对象技术领域内占主导地位的标准建模语言。
汇川技术 MD580系列 低压高性能工程型 变频器 调试手册 A01

前言前言资料简介本产品是一款低压高性能工程型变频器,采用高性能的矢量控制技术,低速高转矩输出,具有良好的动态特性和超强的过载能力,支持永磁同步电机和交流异步电机控制,支持用户编程功能及后台监控,支持多种类型的编码器和通信总线,组合功能丰富,性能稳定。
MD580系列低压高性能工程型变频器是针对重工EU行业和传统OEM行业市场单点传动应用场合推出的全新一代单机传动产品,广泛应用于石油化工、冶金造纸、印刷包装、木工机床、食品饮料、物流仓储、纺织印染、风机水泵等行业。
本手册介绍产品的调试、参数说明,包括操作面板、调试软件、调试流程与步骤及参数一览表等。
更多资料版本变更记录‑1‑前言关于手册获取本手册不随产品发货,如需获取电子版PDF文件,可以通过以下方式获取:),“服务与支持‑资料下载”,搜索关●登录汇川技术官方网站(键字并下载。
●使用手机扫产品机身二维码,获取产品配套手册。
扫描下方二维码,安装掌上汇川App,在App内搜索获取手册。
●Array保修声明正常使用情况下,产品发生故障或损坏,汇川技术提供保修期内的保修服务(产品保修期请详见订货单)。
超过保修期,将收取维修费用。
保修期内,以下情况造成的产品损坏,将收取维修费用。
●不按手册中的规定操作本产品,造成的产品损坏。
●火灾、水灾、电压异常,造成的产品损坏。
●将本产品用于非正常功能,造成的产品损坏。
●超出产品规定的使用范围,造成的产品损坏。
●不可抗力(自然灾害、地震、雷击)因素引起的产品二次损坏。
有关服务费用按照厂家统一标准计算,如有契约,以契约优先的原则处理。
详细保修说明请参见《产品保修卡》。
‑2‑目录目录前言 (1)安全注意事项 (5)1参数的设定值与输出值说明 (10)2调试工具 (11)2.1调试工具一览 (11)2.2SOP‑20‑880操作面板 (11)2.2.1概述 (11)2.2.2部件说明 (12)2.2.3面板显示 (13)2.2.4参数设置 (14)2.2.5参数查看 (15)2.2.6状态指示灯 (15)2.2.7中继连接PC机 (16)2.3MDKE‑10操作面板 (17)2.3.1概述 (17)2.3.2部件说明 (18)2.3.3面板显示 (19)2.3.4操作面板设置 (27)2.3.5驱动电机演示 (27)2.3.6中继连接PC机 (29)2.4InoDriveStudio调试软件 (30)2.4.1概述 (30)2.4.2安装 (30)2.4.3常用功能介绍 (30)2.4.3.1主界面 (30)2.4.3.2新建工程 (31)2.4.3.3控制面板 (35)2.4.3.4故障报警查看 (36)2.4.3.5参数查看与修改 (37)2.4.3.6参数比较 (38)2.4.3.7参数备份与下载 (40)2.4.3.8自定义参数组 (43)2.4.3.9已修改参数查看 (46)2.4.3.10搜索功能 (46)2.4.4波形记录与分析 (47)2.4.4.1连续示波器 (48)2.4.4.2黑匣子功能 (52)3调试与运行 (59)3.1概述 (59)3.1.1逆变模块说明 (59)3.1.2控制模块说明 (60)3.1.2.1标配外围端子介绍 (60)‑3‑目录3.1.2.2拓展模块介绍 (60)3.2调试流程图 (62)3.3调试前检查 (62)3.3.1检查表 (62)3.3.2检查接线 (63)3.3.3恢复出厂参数 (63)3.3.4设置负载模式 (64)3.4设置电机基本参数 (65)3.5设置电机控制方式 (65)3.6设置电机控制模式 (66)3.7设置编码器 (66)3.8电机参数自动计算 (71)3.9电机辨识 (72)3.9.1电机辨识前检查 (72)3.9.2电机参数辨识 (72)3.10试运行 (74)3.10.1本地控制和默认端子启动 (74)3.10.2通过现场总线启动 (75)3.10.3使用数字量输入与模拟量输入启动 (79)3.10.4通过Modbus启动 (79)4故障处理 (85)4.1故障查看 (85)4.2故障复位 (87)4.3故障一览表 (88)5术语与缩略语 (115)‑4‑安全注意事项安全注意事项安全声明●本章对正确使用本产品所需关注的安全注意事项进行说明。
2022年秋季-福师《软件工程》在线作业一-[复习资料]-答案4
![2022年秋季-福师《软件工程》在线作业一-[复习资料]-答案4](https://img.taocdn.com/s3/m/807a1cf85122aaea998fcc22bcd126fff7055dbf.png)
2022年秋季-福师《软件工程》在线作业一-0004
试卷总分:100 得分:100
一、单选题 (共 30 道试题,共 60 分)
1.判定覆盖又叫()
<-A.->分支覆盖
<-B.->条件覆盖
<-C.->语句覆盖
<-D.->点覆盖
答案:A
2.以下那个不属于验证软件需求的正确性的()
<-A.->一致性
<-B.->完整性
<-C.->现象性
<-D.->有效性
答案:C
3.软件()是把程序从一种计算环境转移到另一种计算环境的难易程度
<-A.->可测试性
<-B.->可移植性
<-C.->可修改性
<-D.->可理解性
答案:B
4.Jackson结构程序设计方法基本上由()个步骤组成
<-A.->1
<-B.->3
<-C.->5
<-D.->7
答案:C
5.软件测试方法中,黑盒、白盒测试法是常用的方法,白盒测试主要用于测试()<-A.->结构合理性
<-B.->软件外部功能
<-C.->程序正确性
<-D.->程序内部逻辑
答案:D
6.以下不是白盒测试技术的是()。
<-A.->基本路径测试
<-B.->边界值分析测试
<-C.->循环覆盖测试
<-D.->逻辑覆盖测试
答案:D。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译错误
3 运行时错误
• 运行时错误是指应用程序在运行期间执行 了非法操作或某些操作失败,如打开的文 件未找到、磁盘空间不足、网络连接断开、 除法中除数为零等等; • 例:数组下标越界是一种典型的运行时错 误。 int [] arrayX = new int [4]; for(int i = 0; i<5;i++){ arrayX[i] = i; }
测试法调试
• 使用测试用例。供调试的测试用例,目 的是提供有用的信息,定位某个被怀疑 的错误 • 当发现缺陷的症状后,会编写供调试的 测试用例,发现错误位置 • 不是一种独立的方法,常结合归纳法或 演绎法一起使用
调试原则
• 在调试方面,许多原则本质上是 心理学方面的问题。调试由两部 分组成,调试原则也分成两组。
• 可以说,调试是通过现象,找出原因的一个 思维分析的过程。
调试——一项最不受欢迎的活动
• 个人自尊会从中阻挠 • 热情耗尽 • 可能迷失方向 • 必须自力更生
调试的步骤
(1) 从错误的外部表现形式入手,确定程序 中出错位置; (2) 研究有关部分的程序,找出错误的内在 原因; (3) 修改设计和代码,以排除这个错误; (4) 重复进行暴露了这个错误的原始测试或 某些有关测试。
慢镜头的威力
• 如何实现这个慢镜头呢?方法很多: 1、单步运行 2、在每一步分动作之后设立断点 3、在每一步分动作之后插入足够的延时,让我 们可以看清楚这些分动作 • 通过慢镜头的反复回放,我们就可以发现,到底 是哪一个分动作出现了问题。
– 证明假设 把假设与原始线索或数据进行比较,若它能 完全解释一切现象,则假设得到证明;否则, 就认为假设不合理,或不完全,或是存在多 个错误,以致只能消除部分错误。
演绎法调试
• 演绎法是一种从一般原理或前提出发,经 过排除和精化的过程来推导出结论的思考 方法。 • 演绎法排错是测试人员首先根据已有的测 试用例,设想及枚举出所有可能出错的原 因做为假设;然后再用原始测试数据或新 的测试,从中逐个排除不可能正确的假设; 最后,再用测试数据验证余下的假设确是 出错的原因。
软件调试
软件测试
什么是软件调试?
•软件调试的原因? •什么是软件调试? • 软件调试的特点 • 调试步骤 •调试的主要难点
DEBUG的由来
1937年,美国青年霍德华.艾肯找到IBM公司 为其投资200万美元研制计算机,第一台成品 艾肯把它取名为:马克1号(mark1) 为马克1号编制程序的是哈佛的一位女数学家 格蕾丝· 莫雷· 霍波,有一天,她在调试程序时 出现故障,拆开继电器后,发现有只飞蛾被夹 扁在触点中间,从而“卡”住了机器的运行 霍波诙谐的把程序故障统称为“臭虫 (BUG)”,把排除程序故障叫DEBUG
– 确定程序中可疑错误的确切性质和位置。 – 对程序(设计,编码)进行修改,排除这个 错误。
调试的特点:
• 调试工作是一个具有很强技巧性的工作。 • 软件运行失效或出现问题,往往只是潜在错 误的外部表现,而外部表现与内在原因之间 常常没有明显的联系。如果要找出真正的原 因,排除潜在的错误,不是一件易事。
调试的分类
• 程序的动态调试就是实际上机调试,它 贯穿在编译、连接和运行的整个过程中。 根据程序编译、连接和运行时计算机给 出的错误信息进行程序调试,这是程序 调试中最常用的方法,也是最初步的动 态调试。在此基础上,通过“分段隔 离”、“设置断点”、 “跟踪打印”进 行程序的调试。
几种主要的调试方法
•暴力法调试 •归纳法 •演绎法 •回溯法 •测试法
应用以上任一种方法之前,都应当对错误的征兆进行全面彻底的 分析,得出对出错位置及错误性质的推测,再使用一种适当的调 试方法来检验推测的正确性。
强行排错
这种调试方法目前使用较多,效率较低。它不 需要过多的思考,比较省脑筋。例如:
– 通过内存全部打印来调试,在这大量的数据中寻找出错的位 置。 – 在程序特定部位设置打印语句,把打印语句插在出错的源程序 的各个关键变量改变部位、重要分支部位、子程序调用部位, 跟踪程序的执行,监视重要变量的变化。 – 自动调试工具。利用某些程序语言的调试功能或专门的交互 式调试工具,分析程序的动态过程,而不必修改程序。
“Yes”描述出现错误的3W1H; “No”作为比较,描述了没有错 误的3W1H。通过分析找出矛盾 来。
–提出假设 分析线索之间的关系,利用在线索结构中观察到 的矛盾现象,设计一个或多个关于出错原因的假 设。如果一个假设也提不出来,归纳过程就需要 收集更多的数据。此时,应当再设计与执行一些 测试用例,以获得更多的数据。
确定错误的性质和位置的原则
• 用头脑去分析思考与错误征兆有关的信 息,避开死胡同。 • 如果遇到பைடு நூலகம்局,就留在稍后解决。 • 遇到困难,就把问题描述给别人听。 • 只把调试工具当做辅助手段来使用。利 用调试工具,可以帮助思考,但不能代 替思考。 • 避免用试探法,最多只能把它当做最后 手段。
修改错误的原则
软件调试的原因?
任何一个天才都不敢说,他编的程序 是完全正确的。几乎每一个稍微复杂一 点的程序都必须经过反复的调试,修改, 最终才完成。所以说,程序的调试是编 程中的一项重要技术。 在应用程序中发现并排除错误的过程 叫做调试。
软件调试
什么是调试(Debug)?
• 软件调试是在进行了成功的测试之后才 开始的工作。它与软件测试不同,调试 的任务是进一步诊断和改正程序中潜在 的错误。 • 调试活动由两部分组成:
归纳法调试
• 归纳法是一种从特殊推断一般的 系统化思考方法。 • 归纳法调试的基本思想是:从一 些线索(错误征兆)着手,通过分 析它们之间的关系来找出错误。
– 收集有关的数据 列出所有已知的测试用例和 程序执行结果。看哪些输入数据的运行结果是 正确的,哪些输入数据的运行结果有错误。 – 组织数据 由于归纳法是从特殊到一般的推断过程,所以需 要组织整理数据,以发现规律。 常以3W1H形式组织可用的数据: “What” 列出一般现象; “Where”说明发现现象的地点; “When” 列出现象发生时所有已知情况; “How” 说明现象的范围和量级;
调试的类别
• 调试方法分为两种:动态调试和静态调试。
• 程序的静态调试就是在程序编写完以后, 由人工“代替”“模拟”计算机,对程序 进行仔细检查,主要检查程序中的语法规 则和逻辑结构的正确性。实践表明,有很 大一部分 错误可以通过静态检查来发现。 通过静态调试,可以大大缩短上机调试的 时间,提高上机的效率。
磨刀不误砍柴功
• 熟悉当前的开发(调试)环境,比如:设置断点、单 步运行、全速运行、终止运行,查看RAM、查看堆栈、查 看IO口状态……总之,要熟练掌握基本操作的方法,并 深刻了解其中意义。 • 了解软件本身的可用资源和特性。 • 了解操作系统和一些硬件资源的知识。 • 掌握基本的调试技巧和常用的调试工能力。(调试36计的最后一 计——就是向他人讨教。尤其是我们现在可以直接询问一 些技术支持,这使得我们解决问题更加便捷。当然,你得 把话说明白才行) • …… • 差不多了,如果上述6把砍柴刀磨好了,就可以开始调 试了。接下来,请调试你的程序……
暴力调试的使用时机
• 其他方法都失败了 • 其他方法的补充,而不是替代
回溯法调试
• 这是在小程序中常用的一种有效的调试方法。 一旦发现了错误,人们先分析错误征兆,确定最先发现 “症状”的位置。然后,人工沿程序的控制流程,向回 追踪源程序代码,直到找到错误根源或确定错误产生的 范围。 • 例如,程序中发现错误处是某个打印语句。通过输出值 可推断程序在这一点上变量的值。再从这一点出发,回 溯程序的执行过程,反复考虑:“如果程序在这一点上 的状态(变量的值)是这样,那么程序在上一点的状态 一定是这样...”, 直到找到错误的位置。
软件常见的错误类型
•语法错误 •编译错误 • 运行错误 • 逻辑错误
1 语法错误
• • • • 词法错误和句法错误。 例如:前边有{ ,后边缺少 } 参数该是整型的变量用了字符型 ……
2 编译错误
• 编译错误是指程序在编译过程中出现的错误。它 是由于不正确的编写代码而产生的如非法使用或 丢失关键字、遗漏了某些必需的标点符号、函数 调用缺少参数或传递了不匹配的参数等等。 • 例: fore(int i = 0; i < 100; i++)//关键字书写错 误 {}
• • • • • 在出现错误的地方,很可能还有别的错误。 应纠正错误本省,而不是症状。 正确纠正错误的可能性并非100% 正确修改错误的可能性随着程序的规模增加而降低 当心修正一个错误的同时有可能会引入新的错误。
• 修改错误的过程将迫使人们暂时回到程序设计阶段。 • 修改源代码程序,不要改变目标代码。
调试的主要难点——技术上
• 现象与原因所处的位置可能相距甚远。 • 当其它错误得到纠正时,这一错误所表 现出的现象可能会暂时消失,但并未实 际排除。 • 现象实际上是由一些非错误原因(例如, 舍入不精确)引起的。 • 现象可能是由于一些不容易发现的人为 错误引起的。
调试的主要难点——技术上
• 错误是由于时序问题引起的,与处理 过程无关。 • 现象是由于难于精确再现的输入状态 (例如,实时应用中输入顺序不确定) 引起。 • 现象可能是周期出现的。在软、硬件 结合的嵌入式系统中常常遇到。
运行时错误
运行时错误
4 逻辑错误
• 逻辑错误是指应用程序未按照预期的方式运行时所产生 的错误。一般来讲,这不是属于语法层次的错误,应用 程序可以执行,但是得不到正确的预期结果。 • 例: 对于一个数组的初始化,预期对其某个特定位置赋初始 值,其余置零: int [] array = new int [100]; array[55] = 55; for(int i = 0;i<100;i++) array[i] = 0; 那么在这段代码完成后就没有得到我们预期的结果(代 码执行顺序的逻辑错误)。