软件调试 笔记1

来源:互联网 发布:linux mac配置文件 编辑:程序博客网 时间:2024/06/02 21:07

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

指令集(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.控制被调试线程进程


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 公司购买货物对方没有发票怎么办 加工货物对方不取怎么办 物流发货发错了怎么办 货车拉的货丢了怎么办 壹米滴答丢货怎么办 物流东西弄丢了怎么办 理赔款账号打错了怎么办 顺丰快递搞丢了怎么办 论文表格跨页了怎么办 网线突然没网了怎么办 室内门高门洞矮怎么办 路基填方土质含水率大怎么办 公路工程材料价格不予调差怎么办 桩基偏位60公分怎么办 定义的跨板受力筋长度不够怎么办 支座梁体预埋钢板忘记埋了怎么办 做nt小孩头朝下怎么办 简历上传的照片太大怎么办 本科毕业论文没写英文摘要怎么办 气泵储气罐有个小眼漏气怎么办 吸拉开关坏了怎么办 窗口数量已达上限怎么办 村土地原始台账没有怎么办 涂防晒霜后出汗怎么办 张拉千斤顶泄荷回油不到位怎么办 隧道二衬打到一半没混凝土怎么办 在左车道骑电动车撞到车怎么办 电镐钻头卡住了怎么办 玩具机器人无线遥控不了怎么办 电锤锤头卸不下来怎么办 打地基没打出硬土层怎么办 中标的项目经理没有B证怎么办 12306证件被注册过怎么办 政府3p项目不给钱怎么办 电气没考上国网怎么办 小区宽带业务被个人承包怎么办 高铁用户名忘了怎么办 昆山社保号是8位怎么办 高铁票误了时间怎么办 动车票没赶上车怎么办 铁路用户名已存在要怎么办