当前位置:网站首页># RACE32——高级断点的设置和应用
# RACE32——高级断点的设置和应用
2022-08-03 02:06:00 【Rainmicro】
RACE32——高级断点的设置和应用
高级断点最主要的两个应用场景就是:条件断点和组合断点。
条件断点的意思是指,在普通断点(如,程序断点、读写断点)的基础上额外限定一些条件:比如,某个变量满足特定的值,某个寄存器等于特定的值,或者程序断点命中的次数累加到一定的值,等等。
下面我们就来看一下如何设置这样的断点:
使用C/C++语法设置断点条件

我们在CONDition框设置的时候,如果勾选了HLL选项,那么条件设置时,需要使用HLL高级语言(C/C++)的语法格式
(mstatic1==12)&&(mcount>200)
设置好后,我们运行程序,可以发现在TRACE32软件右下角,会一直出现**S**
这表明该断点是侵入式(Intrusive)断点。

侵入式(Intrusive)断点的意思是指,程序运行过程中会被不断暂停,暂停下来判断条件是否满足。如果不满足,程序继续运行;如果满足条件,则断点生效,程序完全停下来。

使用TRACE32 语法设置断点条件
如果我们在CONDition框设置的时候,没有勾选HLL选项,那么条件设置时,需要使用TRACE32的语法格式。上面例子中的语法需要改写成
(Var.value(mstatic1)==12.)&&(Var.value(mcount)>200.)
使用TRACE32语法格式的好处是我们可以借助于TRACE32提供的多种函数,来设定更加多样化的条件。例如,寄存器R1的值等于0x0
Register(R1)==0x0


设置循环计数(Count)条件
在调试时,我们还会遇到另一种常用的情形:希望当一个循环体循环了特定的次数后,触发程序暂停。这就需要在TRACE32中设置COUNT条件了。
如下图,同样地,先设置一个基础断点,即sieve函数入口处设置一个程序断点,sieve函数是在一个循环体里,我们希望sieve函数被循环运行了300次后,暂停下来:

设置好后,我们运行程序,可以发现Break.List窗口中,count值一直在累加,当到达300的时候会把程序完全停下来。

设置ProgramPass或者ProgramFail条件
最后,我们来了解一下ProgramPass和ProgramFail断点。该类型的断点必须设置在一个分支指令处,如下图的BEQ指令(相等则跳转)、BGT指令(大于则跳转)、LDREQB指令(Load Byte if Equal)等等。

设置好后,运行程序,程序每次运行到该断点处,都会停下来,判断相应的状态标志位,来确认条件是否满足,如果不满足,则继续运行;如果满足,就把程序完全停下来。

基于条件断点和后续行为的组合断点
边栏推荐
猜你喜欢

MATLAB绘制填充图(X轴上下两种颜色)

The cornerstone of high concurrency: multithreading, daemon threading, thread safety, thread synchronization, mutual exclusion lock, all in one article!...

YYGH-BUG-06

ROS计算图——rqt_graph

ldap创建公司组织、人员

lombok 下的@Builder和@EqualsAndHashCode(callSuper = true)注解

【云原生】阿里云ARMS业务实时监控

370万欧元!西班牙iPronics加速可重构光子芯片商用

JVM内部结构图及各模块运行机制总结

leetcode:162. 寻找峰值
随机推荐
有趣简单的M2处理器性能实验:Swift与C代码执行速度的比较
一个循环,两个循环问题的思考及复现
一篇文章玩明白Stack-migration
【UE4】Build VR live broadcast in LAN UE4.27
ES6 新特性:Class 的基本语法
扩展卡尔曼滤波【转】
EasyGBS播放器优化:设备通道视频播放出现跳屏问题的修复
韦东山 数码相框 项目学习(五)libjpeg-turbo的移植
【7.31】代码源 - 【矩阵操作】【宝箱】【New Stone Game】【等差数列】
【Objective-C语言中的@property增强】
开发JSP应用的基础知识
PHICOMM(斐讯)N1盒子 - Armbian5.77(Debian 9)基本配置
How does Excel compare if two columns of strings are the same?
ROS计算图——rqt_graph
numpy PIL tensor之间的相互转换
【云原生】灰度发布、蓝绿发布、滚动发布、灰度发布解释
visual studio 2012 为啥这么优秀
SPI机制是什么?
.NET in-depth analysis of the LINQ framework (four: IQueryable, IQueryProvider interface details)
List转Map的几种方式






