ARM Hardware Breakpoint vs Software Breakpoint

对于ARM debugger工具,常用的有两种breakpoint.  Hardware vs Software 类型。


ARM 文档给出的相关定义如下。


Hardware breakpoints:

1) 依赖于目标processor实现, 大多数ARM processor都包含了特定的硬件资源,例如

ARM EmbeddedICE 硬件逻辑, 来匹配特定的硬件事件。

调试时使用的调试器可以配置这些硬件资源来实现指令和数据断点。


数据断点有时也被称作为 watchpoint.


2) 哪些硬件资源有效存在,依赖于所使用的处理器。 具体需要参考处理器手册。


3) 硬件断点能够提供额外的匹配能力。 比如可以匹配某个外部信号,

比如区分具有特定权限和非特定权限的存取访问等。  设置地址/数据断点对话框列出了目标硬件的能力范围。


4) 硬件指令断点并不需要内存中的指令发生改变。

这意味着硬件断点可以用来调试flash 和 ROM 中的代码, 并且也能被用于调试可自我修改的代码。


Software Instruction Breakpoint

1) 如果处理器不支持硬件指令断点, 或者你已经用完了有效的硬件断点资源,

这时你可以使用软件指令断点。


2) 软件指令断点修改内存中的指令以创造一个特殊的值, 该值被执行的时候使得处理器进入调试模式。

写入内存中的特殊值取决于所使用的处理器类型。 对于ARM处理器, 根据体系结构和处理器版本,

下列机制之一被使用:

   

      a ) Undefined instruction 被写入内存中, 并且一个硬件断点资源被用来监测该指令的执行。

           当硬件断点单元监测到该 undefined instruction 进入执行流水线阶段, 则处理器进入调试模式。

   

      b )  一条 ARMv5 BKPT 指令被写入内存, 并且一个硬件断点资源被用来监测该指令的执行。

           当硬件断点单元监测到该 BKPT 指令进入执行流水线阶段,则处理器进入调试模式。


      c ) 一条 ARMv5 BKPT指令被写入内存。 当该条指令被执行的时候, 处理器自动进入调试模式。


3) 当一个硬件断点单元被用于监测软件指令断点时, 无论有多少个软件指令断点被设置,

仅仅只有单个的硬件断点资源被使用。 如果你不能成功设置软件指令断点, 你可能需要尝试

首先释放一个硬件断点资源出来。


4) 软件断点不能用于调试flash 或者 ROM 代码。 并且在可自我修改的代码中不可靠。


注意

1) 当浏览内存或者汇编代码时, 调试目标硬件给出的是内存实际值。

2) 在运行之前, 任何软件断点都已经被写入了内存。

3) 当处理器停机的时候, 软件断点会从内存中被移除。 在许多处理器中,不能在运行时访问内存。

     这意味着如果你在目标硬件运行时,断开了调试器和被调试处理器间的连接, 那些断点将被保留在内存中!

     如果处理器随后执行其中的某个断点指令,则(具体依赖于体系结构)处理器要么停在软件断点处;

     要么导致处理器产生一个未定义异常。




引用: 3.1.1、首先点击charles顶部的【Proxy】—>【Breakpoint Settings...】,如下: 。 引用:如果想拦截 http 请求,修改请求参数,或者拦截 response 响应,修改响应结果,可以借用 charles 的 Breakpoint 功能。 引用: 4、Breakpoints 断点调试 vsMap Localvs Compose 4.1 断点调试的使用场景: 。 charles的断点功能是一种调试工具,可以用来拦截和修改HTTP请求和响应。首先,你需要在charles中进行断点设置,通过点击顶部的【Proxy】->【Breakpoint Settings...】来打开设置界面。这样就可以开启断点功能了。在使用过程中,你可以创建断点来拦截特定的请求,然后对请求参数进行修改,或者拦截响应并修改响应结果。断点调试可以在各种场景中使用,比如验证请求的正确性、调试接口问题等等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用Charles做断点测试入门篇](https://blog.csdn.net/lzf_hlh/article/details/115465274)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [charles断点调试](https://blog.csdn.net/qq_41767116/article/details/122151517)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值