这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » Keil调试时设置断点的高级用法

共37条 1/4 1 2 3 4 跳转至

Keil调试时设置断点的高级用法

高工
2022-05-27 10:17:42     打赏

在线调试程序时,打断点是非常有效的一种方式,配合单步调试,可以快速定位问题。但有的时候,手动打断点用起来不是那么方便。

比如,想要在一个循环的第N次停下来,如果手动打断点,那就要不停的点击单步运行,直到循环运行到第N次。再比如,程序运行过程中变量不知何时被改变了,又不好定位,手动打断点就不知打在哪里。这时就要用到一些断点的高级用法。
1、设置断点的运行次数以下面程序为例,在循环的第十次将程序停止。首先在循环中手动打一个断点image.png点击Debug菜单,选择BreakPoints:image.png弹出下面菜单:image.png最上面断点是手动打的,双击该断点,会看到Expression会显示该断点的信息,修改Count的值为10,点击Define然后关闭该窗口。这里说明一下:Expression为表达式,即断点的条件,可以看到,手动设置的断点结尾为\123,表示在main.c文件的123行。这里支持基本的>、<、==、!=等操作符。Count为次数,表示运行多少次中断一次,手动设置的断点Count都是1。
Command为命令,表示到达该断点时执行的命令,默认为空。
按照上面的设置,运行程序。可以看到,程序运行到断点没有马上停下,而是在第10次才停下来image.png2、变量匹配断点将变量添加到Watch窗口,右击选择Set Access BreakPoint at xxx。还是弹出刚才的菜单:image.pngimage.png勾选Access方式Read或Write,设置Count值,点击Define。这里选择Write,Count值为4,表示该变量第四次被写入时程序会停止。3、变量条件匹配断点跟上一步一样,在Watch窗口,右击变量选择Set Access BreakPoint at xxx。勾选Access方式Read或Write,删除Expression下原来的内容,填写表达式“AD== 10”。点击Define。这样当AD==10时程序会停止。image.png4、打印信息

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

image.pngimage.png5、条件匹配打印信息还可以将3和4组合使用,如下所示:image.png则AD==10时,程序不中断,在Command窗口打印信息。断点的高级用法还有很多种,不同的表达式,不同的指令等,具体可查阅Keil的使用帮助文档。image.png





关键词: 调试     断点     高级     用法    

菜鸟
2022-05-27 10:42:56     打赏
2楼
广告内容

专家
2022-05-27 10:48:33     打赏
3楼

谢谢分享


专家
2022-05-27 11:52:03     打赏
4楼

学习学习 


高工
2022-05-27 15:44:26     打赏
5楼

谢谢分享


高工
2022-05-27 16:40:28     打赏
6楼

感谢楼主的分享,很实用了。


院士
2022-05-27 21:04:36     打赏
7楼

学习


专家
2022-05-27 21:32:55     打赏
8楼

看看


专家
2022-05-28 06:12:02     打赏
9楼

谢谢分享


专家
2022-05-28 06:48:52     打赏
10楼

感谢分享


共37条 1/4 1 2 3 4 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
站长统计