软件调试 笔记1

-----------------------------《软件调试》前言---------------------------------------------------------------------------

指令集(Instruction Set):一台计算机认识的所有指令

程序:按照一定格式编写的指令序列

通用计算机:同一台计算机,执行不同的指令,就可以完成不同的任务

软件(Software):计算机程序和他的文档

软件开发(Software Development):将用户需求转变成产品的过程

臭虫(Bug),软件缺陷(Defect):隐藏在软件中的设计失误。19世纪七bug就被用来描述电子设备中的设计缺陷。爱迪生就用过。


-----------------------------《软件调试》第一章---------------------------------------------------------------------------

软件调试(Software Debugging):探索软件缺陷根源并寻求解决方案的过程,重现软件故障(failure),定位故障根源,解决软件故障。To detect,locate and correct logicalor syntactical error in a program or malfunctions in hardware。

重现故障:在用于调试的系统上重复导致故障的步骤,是要调试的问题出现在被调试系统中

定位:使用各种工具调试手法找到导致软件故障的根源(root cause)。

解决软件故障:探索和实现解决方案并验证之,验证OK则关闭问题。


软件调试分类:

按被调试程序运行的操作系统划分:DOS软件调试,WINDOWS软件调试,LINUX软件调试。通常针对编译为机器码的native程序而言。.Net和Java这样的不在其中。

俺目标代码执行方式分:脚本语言开发叫脚本调试,用的是脚本调试器。相对应的是编译执行程序调试,而他又分为本地调试(C/C++)和托管调试(C#,JAVA)和混合调试(同一个调试会话中既包含本地代码调试,又包含托管代码调试)。

按目标代码执行分:用户模式调试,内核态调试。

按调试阶段分:开发期调试(发布前),产品期调试(产品发布后,主要靠客户客户反馈和软件自动错误报告机制获得)

产品其调试特点:很可能与特定的使用环境和使用方式有关;问题范围更大,解决过程时就逐渐缩小问题范围,有的问题根源不属于本产品;有些模块可能是别的公司的,没有代码和文档,需要汇编级分析跟踪和堆栈数据;通常无法再客户机上调试;更紧迫。

按调时器与调试目标的相对位置分:被调试程序和调时期在同一系统中,成为本机调试(包括在同一台机器上不不同虚拟机中);调试器和被调试程序不在同一台计算机上,通过以太网或其他某种连接完成调试的,称作远程调试(USB,1394调试windows内核,不算远程调试)。

按调是目标活动性分:活动目标调试(Live Target Debugging)和转储文件调试(Dump File Debugging)。转储文件以文件形式将调试目标内存凝固下来,包含某时刻程序运行状态,这是定位产品期问题,系统崩溃和应用程序崩溃的一种有效方式。

按调试工具分:调试器调试(断点,单步执行,跟踪执行),不使用调试器调试(调试信息输出,日志文件,观察内存和文件等) 

调试技术:

a.断点(Breakpoint):CPU执行到某位置的时候,停止执行被调试程序,中断到调试器(break into debugger),让调试者分析调试。调试者分析完后,可以让被调试程序恢复执行。

按断点设置空间分为:

代码断点:设置在内存空间中的断点,其地址通常是某一段代码的起始处

数据断点:设置在内存空间中的断点,其地址一般要见识变量的起始地址。当被调试程序访问指定内存地址的数据时断点命中。根据需要,可定义出发断点的方式和宽度。

IO断点:设置在IO空间中的断点,其地址为某IO地址。当程序访问指定io地址的端口是中断到调试器。也可以设置被触发的宽度。

按断点设置方法分为:

硬件断点:设置CPUde调试寄存器来设置,IA32有8个调试寄存器DR0-DR7,对一个调时会话,可同时设置最多4个硬件断点。

软件断点:想制定代码位置掺入专业断点指令是先,如IA32 CPU的int 3指令(机器指令0xCC)

追踪点(Tracepoint):设置一个追踪点时,调试器内部会做特殊的断点来处理。当调试器受到断点时间后,会找出追踪点定义的行为,通常打印提示信息或者变量值,燃尽皮被调试程序继续执行。(这个号自动啊,不错不错)

条件断点(Conditional Breakpoint):类似于最总店,用户设置一个条件断点时马士基插入一个无条件断点,然后再命中时候,调试器检查这个断电的附加条件,如果不满足立刻恢复执行,满足则中断给用户。

b.单步执行

c.输出调试信息

d.日志

e.事件追踪

f.转储文件

g.栈回朔

h.反汇编

i.观察修改数据

j.控制被调试线程进程


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值