目前常用的调试方法有如下几种:
· 试探法。调试人员分析错误的症状,猜测问题的所在位置,利用在程序中输出语句,分析寄存器、存储器的内容等手段来获得错误的线索,一步步地试探分析出错误所在。这种方法效率很低,适合于结构比较简单的程序。
· 回溯法。调试人员从发现错误症状的位置开始,人工沿着程序的控制流程往跟踪代码,直到找出错误根源为止。这种方法适合于小型程序,对于大规模程序于其需要回溯的路径太多而变得不可操作。
· 对分查找法。这种方法主要用来缩小错误的范围,如果已经知道程序中的变量若干位置的正确取值,可以在这些位置上给这些变量以正确值,观察程序运行输出结果,如果没有发现问题,则说明从赋予变量一个正确值开始到输出结果的程序没有出错,问题可能在除此之外的程序中,否则错误就在所考察的这窨程序中,对含有错误的程序段再使用这种方法,直到把故障范围缩小到比较牵诊断为止。
· 归纳法。归纳法就是从测试所暴露的问题出发,收集所有正确或不正确的数分析它们之间的关系,提出假象的错误原因,’用这些数据来证明或反驳,从而翟错误所在。
· 演绎法。根据测试结果,列出所有可能的错误原因。分析已有的数据,排除.能和彼此矛盾韵原因。对余下的原因,选择可能性最大的,利用已有的数据完该假设,使假设更具体。用假设来解释所有的原始测试结果,如果能解释这一,则假设得以证实,也就找出错误;否则,要么是假设不完备或不成立,要么有问题。
几个主要软件调试方法及调试原则
这个跟你用什么调试器有一定关系
如果你用VC6.0的调试器,那么可能你的调试手段就会受一定限制,VC下主要就是
单步,步入,堆栈和寄存器的查看,变量的查看,普通断点,条件断点,内存访问断点;
如果你用OllyDbg,那么除了上述手段外,还有硬断点,内存读/写断点等
如果你用windbg的话,手段也很丰富,就是命令多了点,可能需要你去记;
大多数调试器的常用手段就是我上面说的那些了
对软件采用的调试方法有哪些?
1. 直接输入、更改、跟踪、运行汇编程序 2. 观察操作系统的内容; 3. 查看ROM BIOS的内容; 4. 观察更改RAM内部的设置值; 5. 以扇区或文件的方式读写软盘数据。 在DEBUG中地址用段地址与段内地址来表示,而段地址可以明确地指出来,也可以用一个段指示器(段寄存器)来代表,用段寄存器表示时,其段地址就是此寄存器的内含值: 如:用段地址和段内地址表示FOFF:0100 用段寄存器和段内地址表示CSF:0100←CS指向F000 下面列出了常用命令用法。 -A 地址 从指定地址开始编写小汇编程序,按两个回车键结束编辑 -U 地址 从指定地址开始反汇编32字节的机器指令,缺省地址则从上一U命令继续 -D 始址 终址 以16进制/Asc字符对照方式显示指定内存范围的数据,每行显示10H个字节 -E 地址 值表 用给出的值表(空格分隔)替换指定地址开始的内存单元,例:-E 100 'v' 1F 'hello' -N 文件名 为后续的L/W命令约定所操作的文件名 -L 地址 将N命令所指定文件的内容读入到指定内存位置。另,逻辑卷扇区直接读:-L 地址 逻卷号 起始逻扇号 扇数 -W 地址 将BX-CX个字节的内存数据写入N命令指定的文件中。另,逻辑卷扇区直接写:-W 地址 逻卷号 起始逻扇号 扇数 -R 寄存器名 显示并允许修改指定寄存器的值 -G=始址 终址 执行指定内存中的机器指令程序 -T=地址 单步执行机器指令,缺省地址则从上一T命令继续。另,继续跟踪m条指令:-T m 读取c:卷的引导扇区,并保存到Boot.1文件中,并简单分析引导程序的前面几条指令: -L 1000 2 0 1 -N boot.1 -R bx ;输入0000 -R cx ;输入0200 -W 1000 -U 1000 读取第一个硬盘上的主引导扇区,并保存到MB.1文件中,在屏幕上显示硬盘分区表数据: -A 100 yyyy:0100 mov dx,0080 yyyy:01xx mov cx,0001 yyyy:01xx mov ax,yyyy yyyy:01xx mov es,ax yyyy:01xx mov bx,1000 yyyy:01xx mov ax,0201 yyyy:01xx int 13 yyyy:01zz nop -G=yyyy:0100 01zz -N mb.1 -R bx ;输入0000 -R cx ;输入0200 -W 1000 -D 11be 11ff debugging命令 debugging命令概述 获得路由器中交换的报文和帧的细节信息 用于调试信息 debugging命令使用注意事项 不使用debug命令监控正常的网络运行 在网络使用的低峰期使用 不要轻易使用类似debugging all之类的命令 使用debugging命令后,应立即以“undo debugging”命令终止debugging命令的执行。 Debugger "Debugger"这个词按它的英文字面意思来讲是这样一种“装置”(-er),这种装置可以“消除”(De-)“系统中的缺陷”(bug)。然而事实上,迄今为止我们经常使用到的"Debugger"只是用来帮助我们进行Debug的工具,"Debugger"本身不能自动完成"Debug"。我们可以回想一下我们是如何进行Debug的,在进行Debug的过程中,我们通过Debugger来完成以下工作: (1)监视“Debug对象”的状态; (2)控制“Debug对象”的运行; 这些工作可以为“发现Debug对象中存在的问题”以及“对解决问题方案的检验”提供有用的信息。 监控工作有时只需要由软件就可以完成,有时不仅需要软件支持,还需要硬件的支持。 Debugger除了被用来Debug,还被用来帮助我们理解“Debug的对象”内部结构,因为我们用到的Debugger能够完成对“Debug对象”的监控工作,在监控的过程中可以获取“Debug对象”动态特征的信息,这对我们理解其结构是非常有用的。 关于更详细的介绍和研究可以参考国人原创的《软件调试》 ,这 [url= http://www.chenganzhiyxrj.com ]嫦娥二号直播[/url]
需求获取的常用方法有哪些?25.说明软件测试和调试的目的有何区别
需求获取的常用方法有哪些
1)用户访谈
用户访谈是一种最基本的需求获取手段,它是指分析人员以个别访谈或小组合议的形式与用户进行初步的沟通。用户访谈的形式包括结构化和非结构化两种,结构化是指分析人员按照——定准则事先准备好一系列问题,通过用户对问题的回答来获取有关目标软件方面的内容;非结构化则是只列以一个粗糙的想法,根据访谈的民体情况来进行发挥。
2)用户调查
在进行用户防谈时,由于很多关键人员的时间有限,不易安排过多的时间或者项日涉及的客户面较广。不可能——一访谈。因此,就需要借助用户调杏的方法,通过精心设计要问的问题,然后下发到相关的人员手中,让他们填写,再从所填写的内容中获取系统的需求倍息,这样就可以克服上述的问题。
用户调查最大的不足就是缺乏灵活性,而且可能存在受调查人员不能很好表述自己想法的限制。
3)现场观摩
俗话说,百闻石如一见,对于许多较为复杂的流程和系统而言,是很难用自然语言表达清楚的。因此,为了能够对系统的需求获得全面的了解,实际观察用户的操作过程就是一种行之合效的方法。现场观摩就是走到客户的工作场所,一边观察,一边听客户讲解,甚至可以安排人员跟随用户一起工作一段时间。这样就可以使得分析人员对客户的需求有更加直观的理解。但是,在现场观摩过程中必须切记;建造软件系统不仅仅只是为了模拟客户的手下操作过程,还必须将最好的经济效益、最快的处理速度、最合理的操作流程和最友好的用户界而等作为软件设计的目标。
4)文档考古
文档考古是指对历史存在的—些文档进行研究,从带有数据的文件、表单、报表等文档中获取所需信息的过程。对于一些数据流程比较复杂的、工作表单较多的项目来说,就可以应用这种方法。
5)建立联合分析小组
在系统开发时,系统分析员和用户之间由于知识结构的差异,难免存在难逾越的交流鸿沟。
用广提供的需求信息,在系统分析员看来可能是零散和片面甚至无法理解的。因此,为了能够减少交流上的问题,就需要一个领域专家来帮助进行沟通,即可以建立一个由用户、系统分析员和领域专家参加的联合分析小组来共同完成需求的获地。
6)原型法
原型是在软件开发中被广泛使用的一种工具,在软件系统的很多开发阶段都起着非常重要的作用。原型法就是尽可能快地建造一个祖糙的系统,这系统实现了目标系统的某些或全部功能,但是这个系统可能在可靠性、界面的友好性或其他方向上存在缺陷。建造这样一个系统的目的是为了看,考察某一方面的可行性。如算法的可行性,技术的可行性,或考察是否满足用户的需求等。原型是在最终系统产生之前的一个局部真实表现,可以让人们能够对一些具体问题进行基于文物的有效沟通,从而帮助人们尽早解决软件开发个存在的各种不确定性。
7)模型驱动
前面的面谈、原型、观察以及文档审查等方法可以通过执行一些具体的获取行为来对系统需求进行认知和理解。但是大多数软件系统,尤其是对于复杂的系统而言,它们的需求获取任务绝不是可以通道一两次这样简单的获取行为就能够完成的。为了能够使得获取行为相互配合、减少不必要的精力耗费和防止出现获取信息的遗漏,可以采用模型驱动的方法。
8)基于上下文的方法
软件系统是作为一个整体存在的,它通过和环境的交互来解决用户的问题,满足用户的需求。软件系统中的每项功能都是依存于一定的背景和上下文环境,因此,要正确地理解系统的功能就必须要正确地理解它的背景和上下文知识。基于上下文的方法就是注重于系统的环境、开发组织的业务背景、涉众的特征以及目标等。与前面的方法相比,它更加注重用户在—定环境下表现出来的行为,通过分析用户的行为得到信息。
说明软件测试和调试的目的有何区别
1、目的不同
软件测试的目的是发现错误,至于找出错误的原因和错误发生的地方不是软件测试的任务,而是调试的任务.调试的目的是为了证明程序的正确,因此它必须不断地排除错误.它们的出发点不一样。前者是挑错,是一种挑剔过程,属于质盘保证活动。后者是排错,是一种排除过程,是编码活动的一部分.
2、任务不同
既然软件测试属于质量保证活动,因此它贯穿于整个开发过程.从需求分析开始,就要制订软件测试计划,软件设计时要设计系统软件测试、集成侧试用例,编码阶段要设计单元软件测试用例并进行单元软件测试,软件测试阶段要进行集成软件测试、系统软件测试等,直到产品交付。只要有修改就有软件测试,产品交付后同样。它是比较有规律的活动,有系统的方法、原则作指导。
而调试是编码活动的一部分,因此有编码就有调试.它的任务主要就是排错。调试的方法经常与使用的开发工具有关,例如:解释型的开发工具可以交互式调试,编译型开发工具就很难较好地查错。当然它有一些启发式的方法,它是一种比较依赖开发人员经验的活动。
3、指导原则和方法不同
软件侧试是一种有规律的活动,有一系列软件软件测试的原则.其中主要是制订侧试计划,然后严格执行.其次是一种挑剔性行为,因此它不但要侧试软件应该做的,还需要侧试软件不应该做的事情。调试所遵循的规律主要是一些启发式规则,是一个推理过程。例如使用归纳法、演绎法、回溯法等。
软件测试的输出是预知的,其软件测试用例必须包括预期的结果,而调试的输出大多是不可预见的,需要调试者去解释、去发现产生的原因。
4、操作者
因为心理状态是软件测试程序的障碍,所以执行软件测试的人一般不是开发人员,以使软件测试更客观、更有效,而调试人员一般都是开发人员.
单片机软件调试方法,请问单片机程序调试都有什么方法
用keil调试,主要是设置断点,单步执行,运行到光标处,查看运行时间,监视变量和表达式的值,这些都是常用的手段,你仔细看看工具栏就知道了
Android程序调试的方法有哪些,各有什么特点
能够在eclipse上运行调试应用程序之前,你必须为它创建一个启动项。启动项指定哪个工程将被启动,哪个activity开始工作,以及使用哪些模拟器选项等。按照以下步骤为Eclipse版本的应用程序创建合适的启动项:打开启动项管理工具。在Eclipse3.
调试工具console包含哪些方法
console上述的集中度支持printf的占位符格式,支持的占位符有:字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o),用来显示网页的某个节点(node)所包含的html/xml代码,通过这些可以来调试代码
硬件调试的基本步骤是什么
检查电路
通电观察
静态调试
动态调试
指标测试
1.检查电路
任何组装好的电子电路,在通电调试之前,必须认真检查电路连线是否有错误。对照电路图,按一定的顺序逐级对应检查。
2.通电观察
一定要调试好所需要的电源电压数值,并确定电路板电源端无短路现象后,才能给电路接通电源。电源一经接通,不要急于用仪器观测波形和数据,而是要观察是否有异常现象,如冒烟、异常气味、放电的声光、元器件发烫等。如果有,不要惊慌失措,而应立即关断电源,待排除故障后方可重新接通电源。然后,再测量每个集成块的电源引脚电压是否正常,以确信集成电路是否已通电工作。
3.静态调试
先不加输入信号,测量各级直流工作电压和电流是否正常。直流电压的测试非常方便,可直接测量。而电流的测量就不太方便,通常采用两种方法来测量。若电路在印制电路板上留有测试用的中断点,可串入电流表直接测量出电流的数值,然后再用焊锡连接好。若没有测试孔,则可测量直流电压,再根据电阻值大小计算出直流电流。一般对晶体管和集成电路进行静态工作点调试。
4.动态调试
加上输入信号,观测电路输出信号是否符合要求。也就是调整电路的交流通路元件,如电容、电感等,使电路相关点的交流信号的波形、幅度、频率等参数达到设计要求。若输入信号为周期性的变化信号,可用示波器观测输出信号。当采用分块调试时,除输入级采用外加输入信号外,其他各级的输入信号应采用前输出信号。对于模拟电路,观测输出波形是否符合要求。对于数字电路,观测输出信号波形、幅值、脉冲宽度、相位及动态逻辑关系是否符合要求。在数字电路调试中,常常希望让电路状态发生一次性变化,而不是周期性的变化。因此,输入信号应为单阶跃信号(又称开关信号),用以观察电路状态变化的逻辑关系。
5.指标测试
电子电路经静态和动态调试正常之后,便可对课题要求的技术指标进行测量。测试并记录测试数据,对测试数据进行分析,最后作出测试结论,以确定电路的技术指标是否符合设计要求。如有不符,则应仔细检查问题所在,一般是对某些元件参数加以调整和改变。若仍达不到要求,则应对某部分电路进行修改,甚至要对整个电路重新加以修改。
转载请注明出处51数据库 » 软件调试方法有哪些 软件调试技术包括