你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Keil-MDK 在线调试设置断点的高级用法

[复制链接]
STMCU小助手 发布时间:2023-2-9 14:37

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

比如想要在一个循环的第N次停下来,如果手动打断点,那就要不停的点击单步运行,直到循环运行到第N次。再比如,程序运行过程中变量不知何时被改变了,又不好定位,手动打断点就不知打在哪里。这时就要用到一些断点的高级用法。


8 D2 j& ?9 F1 g& }
1.设置断点的运行次数
以下面程序为例,在循环的第十次将程序停止。首先在循环中手动打一个断点:
微信图片_20230209144235.png
点击Debug菜单,选择BreakPoints:
微信图片_20230209144232.png
弹出下面菜单:
微信图片_20230209144146.png
最上面的断点是手动打的,双击该断点,会看到 Expression 会显示该断点的信息,修改 Count 的值为 10,点击 Define,然后关闭该窗口。
5 S+ ^5 O. {, ~" b( A9 l

8 K; A8 [* r3 s( _7 K, _/ n这里说明一下:         
  • Expression为表达式,即断点的条件,可以看到,手动设置的断点结尾为\123,表示在 main.c 文件的 123 行。这里支持基本的 >、<、==、!= 等操作符。

  • Count为次数,表示运行多少次中断一次,手动设置的断点Count都是1。6 i" v0 e3 {4 I1 ?- M" H( M

  • Command为命令,表示到达该断点时执行的命令,默认为空。% X" ?# h9 S0 L) F0 e; |4 X


    7 S) b5 O! _9 x( o0 p7 y

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

微信图片_20230209144139.png
* s, \8 J  u* ~" C/ O6 J0 P9 }) t( z3 d. \
2.变量匹配断点
将变量添加到Watch窗口,右击选择Set Access BreakPoint at xxx。还是弹出刚才的菜单:' e% F) X; [  C3 t9 x

: ]! g8 o: x/ B3 P: V1 G
3 D$ B. W. A" S& U
微信图片_20230209144135.png

6 Y9 G; N6 ]  `7 `  h' {
微信图片_20230209144126.png
勾选 Access 方式 Read 或 Write,设置 Count 值,点击 Define。这里选择 Write,Count 值为 4,表示该变量第四次被写入时程序会停止。1 A1 r+ k  A2 o8 e( l- G" ^

: b8 e  A; K) q; K- ^% W  w5 r) _
3.变量条件匹配断点
跟上一步一样,在 Watch 窗口,右击变量选择 Set Access BreakPoint at xxx。勾选 Access 方式 Read 或 Write,删除 Expression 下原来的内容,填写表达式“AD== 10”。点击 Define。这样当 AD==10 时程序会停止。
微信图片_20230209144123.png
1 F$ l. t" c$ Y* |+ \; v. B
4. 打印信息
选择一个手动打好的断点,然后在 Command 下填写 printf(),则在运行到断点处时,程序不会停止,而是在 Command 窗口打印设置的信息。
5 C, ^) x- a# q3 m$ B3 W2 ~0 i$ b' b! A5 |4 `

0 P- i1 V1 o" Y, `6 w* B
微信图片_20230209144119.png
/ |0 y, I: \) O0 Y2 N/ Z0 O

$ E8 n' H5 K9 ]0 i- V4 S# g2 y$ x- S& j
微信图片_20230209144114.png
2 z* j  |( N. L# l+ H% v, A
5.条件匹配打印信息
还可以将 3 和 4 组合使用,如下:
微信图片_20230209144110.png
则 AD==10 时,程序不中断,在 Command 窗口打印信息。断点的高级用法还有很多种,不同的表达式,不同的指令等,具体可查阅 Keil的使用帮助文档。
微信图片_20230209144102.png
4 b( ?$ c) G3 f
3 V7 v1 j( O5 s. d
转载自:一起学嵌入式
) ]4 ]3 Y+ o$ M8 N8 ?
赞 收藏 评论2 发布时间:2023-2-9 14:37

举报

2个回答
jundao721 回答时间:2023-2-9 14:59:59

学习了

懒得起名1 回答时间:2026-8-19 10:07:35

image.png

问一下,这情况有遇到过吗?怎么解决

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版