当前位置:网站首页># 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)等等。
设置好后,运行程序,程序每次运行到该断点处,都会停下来,判断相应的状态标志位,来确认条件是否满足,如果不满足,则继续运行;如果满足,就把程序完全停下来。
基于条件断点和后续行为的组合断点
边栏推荐
猜你喜欢
The cornerstone of high concurrency: multithreading, daemon threading, thread safety, thread synchronization, mutual exclusion lock, all in one article!...
大厂标配 | 百亿级并发系统设计 | 学完薪资框框涨
Kubernetes:(八)调度约束和故障排查
【7.31】代码源 - 【矩阵操作】【宝箱】【New Stone Game】【等差数列】
QCheckBox、margin、border、pandding、QHoxLayout、QSplitter、QSpacerItem
【面经】被虐了之后,我翻烂了equals源码,总结如下
How does Excel compare if two columns of strings are the same?
粘包与拆包
一次偶然的钓鱼文件分析
Wireshark data capture and analysis of the transport layer protocol (TCP protocol)
随机推荐
leetcode:151. 颠倒字符串中的单词
Jenkins2.328+sonarqube7.9 实现代码自动化检测
Summary of some interviews
实现统一账号登录,sonarqube集成ldap
LabVIEW程序框图保存为图像
EasyGBS播放器优化:设备通道视频播放出现跳屏问题的修复
【云原生】阿里云ARMS业务实时监控
代码工具推荐
面试题整理1
Kubernetes:(八)调度约束和故障排查
【云原生】灰度发布、蓝绿发布、滚动发布、灰度发布解释
The Multiversity 的 “非常重要的生命体” NFT 推出
Interconversion between numpy PIL tensors
能添加任意贴图超级复布局的初级智能文本提示器
能添加任意贴图超级复布局的初级智能文本提示器(超级版)
45部署LVS-DR群集
46LVS+Keepalived群集
370万欧元!西班牙iPronics加速可重构光子芯片商用
qt opengl 使用不同的颜色绘制线框三角形
怎么从零编写一个 v3 版本的 chrome 浏览器插件实现 CSDN 博客网站的暗黑和明亮主题切换?