【ARM】MDK在debug模式下断点的类型
1、 文档目标
本文旨在深入探讨嵌入式开发环境中(以MDK为例)调试模式下的断点类型,帮助开发者全面了解不同断点的工作原理及其应用场景。通过掌握这些知识,开发者可以更高效地进行代码调试,快速定位和解决问题。
2、 问题场景
在嵌入式开发中,调试是不可或缺的一环。MDK作为一款广泛使用的集成开发环境(IDE),其调试功能强大且灵活。然而,在实际使用过程中,许多开发者对断点的类型及其触发机制缺乏深入了解。例如:
● 在某些情况下,断点似乎“失效”或未被触发,导致调试过程陷入困境。
● 不同类型的断点对程序执行速度的影响差异显著,但开发者可能并未意识到这一点。
● 面对复杂的代码逻辑,如何选择合适的断点类型以实现高效的调试?
为解决上述问题,本文将系统性地介绍MDK调试模式下的三种断点类型,并结合具体案例分析其应用场景及注意事项。
3、软硬件环境
1)、软件版本:MDK 5.38a
2)、电脑环境:Windows 11
3)、外设硬件:无
4、解决方法
断点一共分为三种类型:Access Breakpoint(内存访问断点)、Execution Breakpoint(执行断点)、Conditional Breakpoint(条件断点)。
1)、Access Breakpoint(内存访问断点):指定内存访问的模式(读、写、读写)。当读取、写入或访问特定地址时,内存访问断点暂停程序执行或执行命令。程序执行速度不会受到显著影响,因为只有在指定的访问事件发生时才会计算表达式。
2)、Execution Breakpoint(执行断点):到达指定的代码地址时触发断点。代码地址必须指向CPU指令的第一个字节。
3)、Conditional Breakpoint(条件断点):在设置该类型的断点的时候,需要设置一个条件表达式,当条件表达式为真时,断点就会触发。条件表达式在每条CPU指令执行完毕后都会重新计算,这会大大降低程序的执行速度。