
在线调试程序时,打断点是非常有效的一种方式,配合单步调试,可以快速定位问题。但是有时候,手动打断点用起来不是那么方便。 比如想要在一个循环的第N次停下来,如果手动打断点,那就要不停的点击单步运行,直到循环运行到第N次。再比如,程序运行过程中变量不知何时被改变了,又不好定位,手动打断点就不知打在哪里。这时就要用到一些断点的高级用法。 6 c/ m% _0 L! ]; e& Y 1.设置断点的运行次数 以下面程序为例,在循环的第十次将程序停止。首先在循环中手动打一个断点: ![]() ![]() ![]() . w" a9 X# \! S/ G3 ^# E 这里说明一下:
按照上面的设置,运行程序。可以看到,程序运行到断点时没有马上停下,而是在第10次才停下来: ![]() . J: y2 i' o8 y- x! j# G 2.变量匹配断点 将变量添加到Watch窗口,右击选择Set Access BreakPoint at xxx。还是弹出刚才的菜单:+ S8 E: v; `8 d- z0 V- D' H- ?/ {- S$ k. q7 |2 h2 C % V: W4 T" n8 \9 a! _: R. f ![]() ![]() 9 ~3 n! y# e5 W1 M, h 3.变量条件匹配断点 跟上一步一样,在 Watch 窗口,右击变量选择 Set Access BreakPoint at xxx。勾选 Access 方式 Read 或 Write,删除 Expression 下原来的内容,填写表达式“AD== 10”。点击 Define。这样当 AD==10 时程序会停止。![]() 4. 打印信息 选择一个手动打好的断点,然后在 Command 下填写 printf(),则在运行到断点处时,程序不会停止,而是在 Command 窗口打印设置的信息。$ K$ X3 @4 g; n: t7 W ![]() 7 `% @. c5 u* y! z- J ![]() 5.条件匹配打印信息 还可以将 3 和 4 组合使用,如下:![]() ![]() 转载自:一起学嵌入式 |
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南
ST 微控制器电磁兼容性 (EMC) 设计指南
学习了