硬断点--break point

软断点--assert

简单的解释:

硬件断点:硬断点需要硬件寄存器提供支持,断点的数目受Embedded ICE中的Watchpoint数目的限制,但是可以在任何地方设置断点。

软件断点:软件断点通过在运行起来的程序中设置特征值实现,其数目不受限制,但是一般情况下软件断点只能在可写的存储器的地址中设置(比如:RAM),而不能在ROM(比如:Flash)中设置。

断点可分为硬件断点和软件断点两大类: 
       1.硬件断点需要目标CPU的硬件支持,当前流行的ARM7/9内部硬件设计提供两组寄存器用来存贮断点信息,所以ARM7/9内核最多支持两个硬件断点,而ARM11则可以支持到8个硬件断点.这与调试器无关.
       2.软件断点则是通过在代码中设置特征值的方式来实现的.当需要在某地址代码处设置软件断点的时候,仿真器会先将此处代码进行备份保护,然后将预先设定好的断点特征值(一般为0x0000等不易与代码混淆的值)写入此地址,覆盖原来的代码数据.当程序运行到此特征值所在的地址时,仿真器识别出此处是一个软断点,便会产生中断.当取消断点时,之前受保护的代码信息会被自动恢复.
     硬件断点可以设置在任何位置的代码上,包括ROM和RAM;而软件断点由于需要修改相应地址的值,所以一般只能设在RAM上,但是数量可以不受限制.由于硬件断点设置的灵活性,所以是最优先选用的断点资源,但是两个断点往往很难满足工程师进行深入调试的需要,于是软件断点可以作为硬件断点的补充资源来使用.
     由于通常的软件断点只能设在RAM运行的代码上,而随着系统的代码量越来越大,特别是在移动通信领域,扩充大容量的RAM势必会增加产品的成本,所以现在很多系统直接在FlashROM上运行代码.对于这种在FlashROM上运行代码的系统,一般的软件断点是无法设置的,这也是软件断点的局限性.对于这样的系统,只能通过交替使用两个硬件断点满足需要,但是会带来一定的不便. 要很好的解决这一矛盾,只有使仿真器增加在FlashROM上设置软件断点的功能,拓展仿真器中可供利用的断点资源. 在FlashROM上设置软件断点的原理与在RAM上设置软断点类似,也是在设定的断点处用特征码替换原有代码,通过识别特征码使断点事件发生.不同的是,在FlashROM上设置软件断点需要对Flash进行擦写操作,这就需要仿真器能够有Flash编程功能,并且能够在尽可能短的时间内完成特征码的写入.完成这一系列的读写操作,就可使在FlashROM上调试代码的工程师获得更充裕的断点资源,从而大大提高了开发效率.
       但是,由于对Flash进行擦写需要一定的时间,所以在执行到Flash断点的时候会感觉到有一个停顿的时间.虽然这一点比RAM上的软件断点要差些,但是相对于给工程师调试工作整体上带来的便利而言,这一点是完全可以接受的.
设置断点进行调试是最基本的一种调试手段,选择具有丰富断点资源的ICE仿真器,可以明显地提高调试效率.当然,前提是工程师能够灵活使用各种断点资源.

下边这段话引自《ARM JTAG 调试原理》,可以从具体实现上理解:     (1)WP Address Value/Mask Register和硬件断点
     断点是用来标识某个地址上的指令的,所以要将一个WATCH POINT用作断点设置,首先需要将WP Control Value寄存器的nPOC位置0,用来表示:只有在当前的周期是进行取指令的条件下,才触发断点。要在一个地址设置一个断点,可以通过WP Address Value/Mask这两个寄存器来实现。假设,要在地址0x0040设置一个断点,可以将WP Address Value寄存器的值设置为0x0040,同时将WP Address Mask寄存器的值设置为0x0。另外,将WP Data Mask设置为0xFFFFFFFF,这样可以屏蔽掉WP Data value寄存器的影响,在进行比较的时候,只考虑地址是否匹配。这样,每次ARM7TDMI从地址0x0040取指令的话,不管该指令是什么,断点就会被触发,ARM7TDMI会暂停当前的运行,自动进入调试状态,要清除该断点的话,只要改变WP Address Value寄存器的值,或者设置WP Control Value寄存器,禁止该功能。如果你想在所有地址的低16位的值为0x0040的地方设置断点,可以配合使用WP Address Mask寄存器,  将它的值设置为0xFFFF,0000,这样的话,每次比较的时候,高16为的地址就会被屏蔽掉。其实这种使用方式应该是比较少的,比较多的情况是,屏蔽掉最低2位或者最低1位的地址。在ARM状态下,因为ARM指令的长度是32位的,所有指令地址的最低2位必须为0,所以,如果在ARM状态下,一般将WP Address Mask的低2位置1,在进行地址比较的时候,屏蔽掉地址低最低2位,确保断点是被设置在正确的地址上;如果类似,如果是在THUMB状态下,一般需要将WP Address Mask的最低1位置1。上面描述的是第一种设置断点的方式,这种方式是通过地址比较来实现断点的。这也是我们常说的硬件断点,这类断点可以被设置在任何地址(包括FLASH和SDRAM)。因为ARM7TDMI提供了两组WP Address Value/Mask寄存器,所以,可以支持两个硬件断点。下面让我们来看看断点的另外一种实现方式。
     (2)WP Data Value/Mask Register和软件断点
     在调试过程当中,通过WP Data Value/Mask寄存器也可以实现断点设置。利用WP Data Value/Mask如何实现断点设置呢? 和硬件断点的设置一样,首先需要将WP Control Value寄存器的nPOC位置0,用来表示:只有在当前的周期是进行取指令的条件下,才触发断点。 然后,将WP Address Mask寄存器的值设置为:0xFFFFFFFF, 这样可以屏蔽掉WP Address value寄存器的影响,在进行比较的时候,只考虑数据是否匹配。接下来,将WP Data Value寄存器的值设置为一个固定的值,例如:0xDEDEDEDE,将WP Data Mask寄存器的值设置为0x00000000。在需要设置断点的地方,将其内容替换为0xDEDEDEDE。这样,一但程序运行到该位置,尝试从该位置取指令或者数据的时候,因为取得的数据值和WP Data Value寄存器的值相同,ARM7TDMI会暂停当前的运行,自动进入调试状态。要清除该位置上的断点,我们只需要将该位置原来的指令恢复就可以了。这样,退出调试状态后,程序可以继续正常的运行。通过WP Data Value/Mask寄存器,我们可以在任何需要设置断点的地方,将其内容替换为一个固定的序列,就可以达到设置断点的目的。这种断点就是我们通常所说的软件断点。软件断点的设置方式使得ARM7TDMI可以支持任意数量的软件断点。但也决定了软件断点的局限性:软件断点不能设置在ROM/FLASH里面。因为软件断点的实现需要替换要设置断点的位置的内容,这点在ROM/FLASH做不到。(虽然从某种意义上来说,FLASH也是可读写的,但是需要特殊的指令)。

参考:

http://hi.baidu.com/leetonhill/blog/item/84e9cb4635c9f03286947358.html

http://www.cnblogs.com/dongdonghuihui/archive/2010/04/13/1711030.html

硬件断点和软件断点的区别相关推荐

  1. 计算机的网络硬件和软件有哪些,软件设施包括哪些 硬件设施和软件设施的区别?...

    硬件设施和软件设施的区别如下:硬件设施可以看得见,是一种实物物体,摸得着.打个比方,一所学校的硬件设施就是校园大小,建筑面积.桌椅数量质量.教学用具的数量质量等等. 软件设施可以看得见,也可以看不见, ...

  2. 防火墙是什么?硬件防火墙和软件防火墙的区别

    防火墙是什么?硬件防火墙和软件防火墙的区别 随着时代的发展现在对网络数据安全的要求越来越高,很多租用服务器的客户经常会问我:艾西你们的机房有防火墙吗?我们还需要部署和安装防火墙吗?是否有服务器硬件防火 ...

  3. 硬件断点和软件断点(整理)

    文章目录 1. 断点的类型 2. 为什么要分软件断点和硬件断点呢? 3. GDB中如何设置软/硬件断点 1. 断点的类型 软件断点:由非法指令异常实现,适用于运行于内存中的程序(软件实现).以x86为 ...

  4. 硬件防火墙和软件防火墙的区别有哪些?

    什么是防火墙? 防火墙,指由软件和硬件设备组合而成.在内部网和外部网之间.局域网与外网之间的保护屏障.就像架起了一面墙,它能使网络之间建立起一个安全网关,从而保护内部网免受非法用户的侵入. 熟悉互联网 ...

  5. linux防火墙_硬件防火墙和软件防火墙的区别有哪些?

    什么是防火墙? 防火墙,指由软件和硬件设备组合而成.在内部网和外部网之间.局域网与外网之间的保护屏障.就像架起了一面墙,它能使网络之间建立起一个安全网关,从而保护内部网免受非法用户的侵入. 熟悉互联网 ...

  6. 调试器工作原理--CPU软件断点/硬件断点/单步执行标识

    断点和单步执行是两个经常使用的调试功能,也是调试器的核心功能. 断点是调试器的最常用技术之一.其基本思想是在某一个位置设置一个陷阱,当CPU执行到此位置时,中断到调试器中,让调试者分析和调试,之后恢复 ...

  7. 硬断点和软断点的区别

    硬断点--break point 软断点--assert 简单的解释: 硬件断点:硬断点需要硬件寄存器提供支持,断点的数目受Embedded ICE中的Watchpoint数目的限制,但是可以在任何地 ...

  8. Android基础 硬件加速和软件绘制 invalidate和RequestLayout流程

    前言 本文介绍了硬件加速和软件绘制的区别: 并梳理了最简单的情况,在子View(非ViewGroup)调用invalidate的流程,且忽略绘图缓存,即mLayerType == LAYER_TYPE ...

  9. [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

最新文章

  1. linux内核网络协议栈--数据接收流程图(五)
  2. 《研磨设计模式》chap15 组合模式(2)改写示例+总结
  3. 只有一个显示器但是显示两个显示器_小米34寸曲面显示器深度体验 办公体验极佳 但是还有个大弱点...
  4. 【渝粤教育】广东开放大学 机械制造基础 形成性考核 (55)
  5. 2016/4/19 ①单个文件上传 ②上传图片后 预览图片
  6. [BZOJ2761/Luogu4305][JLOI2011]不重复数字 题解
  7. Windows Server 2012 AD DS环境下域用户自动加入本地管理员组
  8. 使用java语言实现将10进制转化为2进制
  9. mysql客户端navicat怎么连接_Navicat使用详解(mysql客户端工具)
  10. layerdate时间控件的用法
  11. rk3399 android 9.0 root 权限及测试应用
  12. 各种内部排序方法及其比较实验报告
  13. 防火墙开放21端口linux,linux防火墙开放80,3306,21,443端口
  14. 无密码多重身份验证(MFA)2022年全球行业分析报告
  15. IDEA alt + insert快捷键不能使用
  16. MySQL复制表结构以及表数据
  17. KITTI VOC COCO 在线国内下载/百度云
  18. 黑马VUE电商管理后台笔记记录
  19. Cadence PCB仿真使用Allegro PCB SI仿真参数单位配置与说明图文教程
  20. 四川计算机工程师申报表,四川助理工程师评审表.doc

热门文章

  1. 口袋超萌服务器维护中,平民全攻略1
  2. 论文里的摘要和引言的区别
  3. 中国计算机学会举办首届未来计算机教育峰会
  4. 0.96寸OLED屏幕_清行
  5. 安全工程转计算机专业,2019安全工程专业就业前景和就业方向分析
  6. MATLAB中关于patch的用法(涉及vertice,faces等的基础的介绍)
  7. 求二维数组的行列大小(C语言)
  8. 华为手机通过ADB禁止系统更新和卸载自带软件
  9. matlab读Excel表格数据画图,matlab读Excel表格数据画图-如何利用matlab根据excel表格里面的数据画图...
  10. 在下图的基础上,一笔写出“田”字