文章目录

  • 1. 断点的类型
  • 2. 为什么要分软件断点和硬件断点呢?
  • 3. GDB中如何设置软/硬件断点

1. 断点的类型

  • 软件断点:由非法指令异常实现,适用于运行于内存中的程序(软件实现)。以x86为例,向某个地址打入断点,实际上就是往该地址写入断点指令INT 3,即0xCC。目标程序运行到这条指令之后就会触发SIGTRAP信号,gdb捕获到这个信号,根据目标程序当前停止位置查询gdb维护的断点链表,若发现在该地址确实存在断点,则可判定为断点命中[1]。
  • 硬件断点:由硬件特性实现(数量有限),适用于直接在flash中运行的程序。

2. 为什么要分软件断点和硬件断点呢?

既然软件断点是要往某个地址写入断点指令的,那么最起码该地址应该是可写的吧?大多数时候,我们的程序是会被加载到内存(RAM)中执行的,RAM是可读可写,这时候软件断电就是有效的[2]。
但是,对于某些比较重要的程序,可能会直接在flash中执行,并且flash对用户可能是只读的,这时候软件断点就没有用了,因为没办法写进断点指令,此时必须依赖于硬件断点。这就是软件断点和硬件断点使用上的不同。

3. GDB中如何设置软/硬件断点

  • 软件断点:break 命令
  • 硬件断点:hbreak命令

[1] https://blog.csdn.net/gowyz/article/details/7290701
[2] https://www.cnblogs.com/-glb/p/12514577.html
[3] https://blog.csdn.net/small_prince_/article/details/80681684

硬件断点和软件断点(整理)相关推荐

  1. 硬件断点和软件断点的区别

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

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

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

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

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

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

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

  5. 软件调试学习笔记(五)—— 软件断点内存断点

    软件调试学习笔记(五)-- 软件断点&内存断点 调试的本质 软件断点 软件断点的执行流程 分析INT 3执行流程 实验:处理软件断点 内存断点 内存断点的执行流程 实验:处理内存断点 调试的本 ...

  6. 嵌入式软件调试之软件断点

    关注.星标公众号,直达精彩内容 来源:CSDN | maomao171314 整理:技术让梦想更伟大 | 李肖遥 软件断点 INT 3 指令,即通常所说的"软件断点",一条X86系 ...

  7. VC++设置软件断点和“XXX已停止工作“对话框

    根据资料,VC++中可以用三种方法设置软件断点: 1 使用汇编指令(注:x64 c++不支持嵌入汇编) _asm int 3 2 编译器提供的方法 __debugbreak(); 3 使用window ...

  8. 单片机编程软件很简单(14),Keil单片机编程软件断点设置

    单片机编程软件十分常用,对于单片机编程软件,小编于往期文章中做过诸多介绍.本文对于单片机编程软件的介绍基于Keil,主要内容在于介绍该单片机编程软件的在线汇编功能以及断点设置.如果你对Keil单片机编 ...

  9. 硬件常用测试软件整理,方便大家下载

    硬件常用测试软件整理,方便大家下载 2010年06月22日 硬件常用测试软件整理,方便大家下载 [b]直接右键迅雷下载软件,地址都编辑好了,希望这个帖子能方便大家[/b] [b][/b] [b]EVE ...

最新文章

  1. uboot、kernel和rootfs烧录
  2. K8S 从懵圈到熟练--大数据平台技术栈18
  3. sql 只取一条记录_后端程序员必备:书写高质量SQL的30条建议
  4. 机器学习(MACHINE LEARNING)MATLAB求解状态转移矩阵
  5. 自己动手写第一阶段的处理器(1)——计算机的简单模型、架构、指令系统
  6. 利用一个样本估计类别数据分布,9行代码提高少样本学习泛化能力
  7. 快速定位Webclient UI 登陆business role之后timeout问题
  8. boost1.7 centos7编译
  9. OpenGL学习(一)OpenGL基本介绍
  10. GridView 一些操作
  11. MTK:屏幕模板机制
  12. Atitit 数据与模板绑定法 目录 1.1. templet - 自定义列模板 1 1.2. 方式三:直接赋值模版字符。事实上,templet 也可以直接是一段 html 内容,如: 1 1.2.
  13. 清华大学计算机考研总结,2020考研清华大学计算机考研考试科目总结
  14. MySQL创建外键出现 ERROR 1005: Can't create table (errno: 150)解决办法
  15. Rust 调用标准C接口的自定义c/c++库,FFI详解
  16. [网络性能测试学习笔记] 测试AX3 Pro WiFi6无线路由器的系统转发能力(硬件转发交换能力L23吞吐量,L47应用层能力-最大可支持设备用户数,并发连接数等)
  17. 个人收款码和商家收款码有哪些区别
  18. Django实训:图书信息管理系统
  19. 怎样用计算机打出Abc,快捷安装ABC输入法在win7电脑中的方法
  20. 相对论或能解释为什么中微子速度比光快

热门文章

  1. IE-LAB网络实验室:CCNA在哪考?都准备些什么?
  2. ubuntu14.04 输入法配置
  3. 独立开发Unity3D需要用到的一些其他工具
  4. PyTorch深度学习实践-P10卷积神经网络
  5. mysql 常用的数据源_MySQL常用数据库小结
  6. WebGIS——OpenLayers 3 地图叠加自定义卫星/航拍/手绘地图(任意瓦片图)
  7. stm32-HAL使用stop模式后DMA初始化的问题
  8. cad布局教程_合并CAD布局就是这么快!
  9. 《show stopper》?《shows topper》?
  10. 解决mysql报错ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'