硬件断点和软件断点(整理)
文章目录
- 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
硬件断点和软件断点(整理)相关推荐
- 硬件断点和软件断点的区别
硬断点--break point 软断点--assert 简单的解释: 硬件断点:硬断点需要硬件寄存器提供支持,断点的数目受Embedded ICE中的Watchpoint数目的限制,但是可以在任何地 ...
- 调试器工作原理--CPU软件断点/硬件断点/单步执行标识
断点和单步执行是两个经常使用的调试功能,也是调试器的核心功能. 断点是调试器的最常用技术之一.其基本思想是在某一个位置设置一个陷阱,当CPU执行到此位置时,中断到调试器中,让调试者分析和调试,之后恢复 ...
- 硬断点和软断点的区别
硬断点--break point 软断点--assert 简单的解释: 硬件断点:硬断点需要硬件寄存器提供支持,断点的数目受Embedded ICE中的Watchpoint数目的限制,但是可以在任何地 ...
- [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- 软件调试学习笔记(五)—— 软件断点内存断点
软件调试学习笔记(五)-- 软件断点&内存断点 调试的本质 软件断点 软件断点的执行流程 分析INT 3执行流程 实验:处理软件断点 内存断点 内存断点的执行流程 实验:处理内存断点 调试的本 ...
- 嵌入式软件调试之软件断点
关注.星标公众号,直达精彩内容 来源:CSDN | maomao171314 整理:技术让梦想更伟大 | 李肖遥 软件断点 INT 3 指令,即通常所说的"软件断点",一条X86系 ...
- VC++设置软件断点和“XXX已停止工作“对话框
根据资料,VC++中可以用三种方法设置软件断点: 1 使用汇编指令(注:x64 c++不支持嵌入汇编) _asm int 3 2 编译器提供的方法 __debugbreak(); 3 使用window ...
- 单片机编程软件很简单(14),Keil单片机编程软件断点设置
单片机编程软件十分常用,对于单片机编程软件,小编于往期文章中做过诸多介绍.本文对于单片机编程软件的介绍基于Keil,主要内容在于介绍该单片机编程软件的在线汇编功能以及断点设置.如果你对Keil单片机编 ...
- 硬件常用测试软件整理,方便大家下载
硬件常用测试软件整理,方便大家下载 2010年06月22日 硬件常用测试软件整理,方便大家下载 [b]直接右键迅雷下载软件,地址都编辑好了,希望这个帖子能方便大家[/b] [b][/b] [b]EVE ...
最新文章
- uboot、kernel和rootfs烧录
- K8S 从懵圈到熟练--大数据平台技术栈18
- sql 只取一条记录_后端程序员必备:书写高质量SQL的30条建议
- 机器学习(MACHINE LEARNING)MATLAB求解状态转移矩阵
- 自己动手写第一阶段的处理器(1)——计算机的简单模型、架构、指令系统
- 利用一个样本估计类别数据分布,9行代码提高少样本学习泛化能力
- 快速定位Webclient UI 登陆business role之后timeout问题
- boost1.7 centos7编译
- OpenGL学习(一)OpenGL基本介绍
- GridView 一些操作
- MTK:屏幕模板机制
- Atitit 数据与模板绑定法 目录 1.1. templet - 自定义列模板	1 1.2. 方式三:直接赋值模版字符。事实上,templet 也可以直接是一段 html 内容,如:	1 1.2.
- 清华大学计算机考研总结,2020考研清华大学计算机考研考试科目总结
- MySQL创建外键出现 ERROR 1005: Can't create table (errno: 150)解决办法
- Rust 调用标准C接口的自定义c/c++库,FFI详解
- [网络性能测试学习笔记] 测试AX3 Pro WiFi6无线路由器的系统转发能力(硬件转发交换能力L23吞吐量,L47应用层能力-最大可支持设备用户数,并发连接数等)
- 个人收款码和商家收款码有哪些区别
- Django实训:图书信息管理系统
- 怎样用计算机打出Abc,快捷安装ABC输入法在win7电脑中的方法
- 相对论或能解释为什么中微子速度比光快
热门文章
- IE-LAB网络实验室:CCNA在哪考?都准备些什么?
- ubuntu14.04 输入法配置
- 独立开发Unity3D需要用到的一些其他工具
- PyTorch深度学习实践-P10卷积神经网络
- mysql 常用的数据源_MySQL常用数据库小结
- WebGIS——OpenLayers 3 地图叠加自定义卫星/航拍/手绘地图(任意瓦片图)
- stm32-HAL使用stop模式后DMA初始化的问题
- cad布局教程_合并CAD布局就是这么快!
- 《show stopper》?《shows topper》?
- 解决mysql报错ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'