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窗口打印设置的信息。
5、条件匹配打印信息还可以将3和4组合使用,如下:
则AD==10时,程序不中断,在Command窗口打印信息。 断点的高级用法还有很多种,不同的表达式,不同的指令等,具体可查阅Keil的使用帮助文档。
审核编辑:汤梓红
关键词:
上一篇:华信新材:截至2023年7月31日,公司股东人数为7555户
下一篇:最后一页
- Keil调试时设置断点的高级用法
- 华信新材:截至2023年7月31日,公司股东人数为7555户
- 夏克立否认自己有三栋房 并表示将公开自己的财务状况
- 大悦城(000031):8月3日北向资金增持21.16万股
- EMO | 达诺巴特重新定义行业精度和灵活性
- 中国横扫全球一半量子技术专利 投资规模世界第一
- 人工智能或在塑造科研新貌
- “检群众之所忧”,菏泽开展“你点我检、服务惠民生”活动
-
苹果CEO库克:苹果已研究生成式人工智能技术数年
苹果CEO库克:苹果已研究生成式人工智能技术数年:苹果CEO库克表示,苹
-
惹怒瓜迪奥拉之人即将加盟巴萨,昔日英超第一边翼卫,能注册么?
惹怒瓜迪奥拉之人即将加盟巴萨,昔日英超第一边翼卫,能注册么?,拜仁,
-
格隆汇公告精选(港股)︱猫眼娱乐预计上半年纯利同比增长150.2%-183.1%;小黄鸭德盈拟获沙特主权财富基金PIF投资2.5亿美元
【今日焦点】小黄鸭德盈(02250 HK)签订备忘录拟获沙特主权财富基金PIF
-
逐梦丨踏上肖思远走过的路 他也愿成为祖国的界碑!
思想解读类融媒体片《逐梦》第六集《永远守住根与魂》选取“硬骨头六连
X 关闭
X 关闭