KEIL高级调试——条件断点

在线调试程序时,打断点是非常有效的一种方式,配合单步调试,可以快速定位问题。但是有时候,手动打断点用起来不是那么方便。比如想要在一个循环的第N次停下来,如果手动打断点,那就要不停的点击单步运行,直到循环运行到第N次。再比如,程序运行过程中变量不知何时被改变了,又不好定位,手动打断点就不知打在哪里。这时就要用到一些断点的高级用法。

1.设置断点的运行次数。

以下面程序为例,在循环的第十次将程序停止。首先在循环中手动打一个断点:

在这里插入图片描述

点击Debug菜单,选择BreakPoints:

在这里插入图片描述

弹出下面菜单:

在这里插入图片描述

最上面的断点是手动打的,双击该断点,会看到Expression会显示该断点的信息,修改Count的值为10,点击Define,然后关闭该窗口。这里说明一下:

Expression为表达式,即断点的条件,可以看到,手动设置的断点结尾为\123,表示在main.c文件的123行。这里支持基本的>、<、==、!=等操作符。

Count为次数,表示运行多少次中断一次,手动设置的断点Count都是1。

Command为命令,表示到达该断点时执行的命令,默认为空。

按照上面的设置,运行程序。可以看到,程序运行到断点时没有马上停下,而是在第10次才停下来:

在这里插入图片描述

2.变量匹配断点

将变量添加到Watch窗口,右击选择Set Access BreakPoint at xxx。还是弹出刚才的菜单:

在这里插入图片描述

在这里插入图片描述

勾选Access方式Read或Write,设置Count值,点击Define。这里选择Write,Count值为4,表示该变量第四次被写入时程序会停止。

3.变量条件匹配断点

跟上一步一样,在Watch窗口,右击变量选择Set Access BreakPoint at xxx。勾选Access方式Read或Write,删除Expression下原来的内容,填写表达式“AD== 10”。点击Define。这样当AD==10时程序会停止。

在这里插入图片描述

4.打印信息

选择一个手动打好的断点,然后在Command下填写printf(),则在运行到断点处时,程序不会停止,而是在Command窗口打印设置的信息。

25533cae5c9e4068c8d4180f4d10939b.png

5.条件匹配打印信息

还可以将3和4组合使用,如下:

在这里插入图片描述

则AD==10时,程序不中断,在Command窗口打印信息。

断点的高级用法还有很多种,不同的表达式,不同的指令等,具体可查阅Keil的使用帮助文档。

在这里插入图片描述

————————————————
版权声明:本文为CSDN博主「天外飞仙CUG」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhang062061/article/details/124162114

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

emailjava中怎么校验_Java使用注解实现参数统一校验功能

在项目开发中&#xff0c;当使用配置文件的时候&#xff0c;需要对一些配置参数进行合法校验&#xff0c;如果不存在则会抛出异常或者提醒用户重新修改配置文件后运行系统。 以前的做法就是读取到配置文件后&#xff0c;每个配置项挨个检查&#xff0c;写多个if判断是否存在问题…

原来保险丝熔断原理是这样的

如果电路中的保险丝熔断了&#xff0c;想亮起一个灯来指示&#xff0c;可以考虑用这个电路&#xff1a;这个电路的工作逻辑&#xff1a;当保险丝F1正常工作时&#xff0c;只亮起绿灯LED2。当保险丝F1熔断时&#xff0c;熄灭绿灯LED2&#xff0c;亮起红灯LED1&#xff0c;告诉人…

docker 定时重启脚本_使用 Go 添加启动脚本

简介实践困惑总结当前部分的代码简介虽然 Makefile 能很好的整合各种命令, 是一个非常方便的工具. 但启动脚本也是必不可少的, Makefile 更多用于开发阶段, 比如编译, 单元测试等流程.启动脚本的作用是控制程序的状态, 管理程序的启动, 停止, 查询运行状态等.实践直接上脚本了:…

为什么我的U盘空间变小了:图解 FAT 文件系统基础知识

作者 | 鱼鹰Osprey转自 | 鱼鹰谈单片机FAT 文件系统是什么&#xff0c;当你格式化 U 盘之后 U 盘发生了什么&#xff0c;为什么删除的文件还可以再恢复&#xff1f;买的 U 盘明明写着 16 G&#xff0c;实际却只有15 G&#xff0c;这里隐藏了什么事实&#xff1f;FAT 文件系统随…

如何DIY一款属于自己的HID键盘?

这是一个自定义游戏键盘&#xff0c;带有四个热插拔机械键和可自定义的RGB LED。它由STM32F103Cx微控制器供电&#xff0c;并通过Arduino IDE进行编程。文章末尾分享该项目资料。功能概述&#xff1a;快速STM32F103Cx微控制器可实现低输入延迟。USB全速&#xff0c;轮询速率为1…

arm9重启ssh服务_部署ssh使用rsa登录配置

什么是ssh?ssh专为远程登录会话和其他网络服务提供安全性的协议&#xff0c;利用ssh协议可以有效的防止远程管理过程中的信息泄露问题。使用ras公钥登录linux操作环境本地服务器&#xff1a;win10 远程服务器&#xff1a;centos 8 git环境生成rsa文件在windows机器上&#xff…

Android MVP模式简单易懂的介绍方式 (一)

Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 最近正在研究Android的MVP模式。看了很多文章&#xff0c;基本上都是长篇大论&#xff0c;一堆理论。但这里&#xff0c;我们不从理论出发&#xff0c…

什么?TTL信号也能高速稳定传输100m+?是的,你没有听错,量产电路推荐!

作者&#xff1a;周工&#xff0c;排版&#xff1a;晓宇微信公众号&#xff1a;芯片之家&#xff08;ID&#xff1a;chiphome-dy&#xff09;TTL传输100米&#xff0c;是不是很惊讶&#xff1f;早就看透了你的心思。传输100米&#xff0c;干嘛不用差分信号&#xff1f;就知道你…

the params of sys aud mod req msgs from TV

sys aud mode req msg sent from TV to AMP has a param of PA of src dev, while sys aud mode req msg sent from TV to AMP hasnt any param: aud sys mod request from TV: sys aud mod req(off) from TV: 转载于:https://www.cnblogs.com/aspirs/p/9708831.html

一定要坚强

想写这篇文章的时候&#xff0c;是因为确实知道发生了一些事情。我应该没有跟大家说过一件事情&#xff0c;我在TCL的时候&#xff0c;因为一件很不爽的事情&#xff0c;跟同事差点打架了&#xff0c;起因是因为睡觉的时候&#xff0c;他一直在打呼噜&#xff0c;然后我晚上我根…

致驱动工程师的一封信

引言 作为一个算是合格的驱动工程师&#xff0c;总是有很多话想说。代码看的多了总是有些小感悟。可能是吧。那就总结一下自己看的代码的一些感悟和技巧。如何利用你看的这些代码&#xff1f;如何体现在工作的调试中。作为驱动工程师&#xff0c;主要的工作就是移植各种驱动&am…

我的博客搭建(3)

hexo生成工程文件介绍 hexo插件 主题yilia 默认目录结构 具体参考 |--.deploy |--public |--scaffolds |--source |--themes |--_config.yml |--package.json .deploy &#xff1a;部署到GitHub上的内容目录public&#xff1a;输出的静态网页内容目录scaffolds&#xff1a;layo…

Oracle 10.2.0.4和10.2.0.5 中 OEM bug 8350262

一. Bug 问题表现 2011年安装Oracle 10.2.0.4 和10.2.0.5 版本时&#xff0c;在配置OEM的时候会报错。 忽略这个错误后&#xff0c;DB 可以成功创建或者升级。 MOS 上关于这个bug的说明&#xff0c;参考&#xff1a;[ID 1222603.1] 该bug 的表现为DBCA和DBUA 配置失败&#xff…

C语言不调用库函数画直线

昨天写了一个代码&#xff0c;使用C语言画三角形&#xff0c;既然写了那个&#xff0c;那就继续画一条直线&#xff0c;这个也很有意思。C语言不调用库函数画一个三角形直线的方程是如下图所示— — 斜率的范围(-∞,∞)既然知道公式了&#xff0c;我们就直接上代码吧&#xff0…

Shell教程

shell编程 shell历史执行脚本基本语法 变量文件名代换Globbing命令代换算术代换转义字符单引号双引号Shell脚本语法 条件测试条件分支 ifthenelifelseficaseesac循环 fordodonewhiledodonebreak和continue位置参数和特殊变量输入输出 echo管道tee文件重定向函数Shell脚本调试方…

尘埃落定,初心未改——一个大学生的电子大赛感悟

大家好&#xff0c;我是写代码的篮球球痴这篇文章是一位参加电子竞赛的总结文章&#xff0c;分享给大家。也欢迎更多的读者给我投稿&#xff0c;采纳后会有礼物赠送。01.一腔热血定乾坤2020年&#xff0c;怀着一腔热血踏入大学。比起高中那个被学业充斥的时代&#xff0c;迈入大…

ik分词和jieba分词哪个好_Python 中文 文本分析 实战:jieba分词+自定义词典补充+停用词词库补充+词频统计...

&#xfeff;最近项目需要&#xff0c;实现文本的词频分析&#xff0c;折腾了几天才完成任务&#xff0c;有点成就感&#xff0c;最后整理总结一下这部分的内容&#xff0c;希望更多同僚受益。一.使用前准备环境&#xff1a;Python3.6安装结巴&#xff1a;pip install jiaba下载…

基于智能手机Android平台音乐播放器全程开发实战

基于android开发的智能手机平台的应用越来越多,目前也是一块比较热门的技术,本项目为基于android系统的音乐播放器项目,学习本项目的目的是为了让学员尽快掌握android领域的小应用的开发.项目从需求分析起步,完善了音乐播放器的所有功能,课程讲解深刻。 项目描述: 1、支持音乐在…

RAC集群故障恢复CRS-4047,CRS-4000

知识点&#xff1a; RAC是real application clusters的缩写&#xff0c;译为“实时应用集群”&#xff0c;是高可用性的一种&#xff0c;也是Oracle数据库支持网格计算环境的核心技术。 主要作用&#xff1a; (1)多节点负载均衡; (2)提供高可用&#xff1a;故障容错和无缝切换功…

急用物料怎么办???

咱们硬件工程师&#xff0c;一般都属于研发部。既然是研发&#xff0c;那么就具有一点研究的性质&#xff0c;有可能遇到预想不到的问题&#xff0c;在解决这些问题的过程中&#xff0c;难免会突然要用到一些器件。这时问题就来了&#xff0c;公司没有这个器件啊&#xff0c;但…