keil 高级使用教程——条件断点

目录

1.依靠断点处执行次数触发断点

2.依靠变量的读取或者写入次数触发中断

3.当变量等于某个值时触发断点

4.打印信息

5.条件+打印

在程序调试的实践中,我们经常会遇到一些复杂的场景,其中典型的包括:

  1. 特定循环次数的打断点:比如,你希望在一个循环执行到第N次时暂停代码,以便于检查程序状态或进行进一步的调试。如果使用传统的手动打断点方式,你可能需要不断地点击“单步执行”,直到循环达到所需的次数。这种方法不仅效率低下,而且容易出错。

  2. 变量变更检测:另一个常见的需求是跟踪一个变量何时以及如何被更改。在复杂的程序中,一个变量可能在多个地方被赋值,手动设置断点并检查每个可能的修改点是非常耗时且困难的。

为了应对这些挑战,现代的开发环境和调试工具提供了更为高级的断点功能,具体如下:

  • 条件断点:这种类型的断点允许你设置一个条件表达式,只有当该表达式求值为真时,断点才会触发。例如,你可以设置一个条件断点,当循环计数器达到特定值时触发。

  • 数据断点:某些调试工具支持数据断点,允许你指定当某个内存地址(对应于特定变量)的内容发生变化时自动暂停执行。这样,你就可以精确地定位到变量值改变的地方。

使用这些高级断点功能,你可以更加智能和高效地进行程序调试,避免了大量不必要的手工操作,快速定位问题所在。

1.依靠断点处执行次数触发断点

让我们随手打个断点。

选择BreakPoints

我们双击Current BreakPoints框中的的断点,Expression将会出现断点信息

这里简单说明一下

Expression是用于设置断点条件的表达式。例如,我们可以在代码的特定行设置断点,以便在执行到该行时暂停程序的运行。此外,我们还可以使用基本的比较操作符(如>、<、==、!=等)来设置更复杂的断点条件。

Count表示断点的触发次数,即程序运行多少次后触发一次断点。在这个例子中,我们设置的断点触发次数为5,表示每次运行5次断点位置时就会触发断点。

Command表示当达到断点时要执行的命令。在这个例子中,我们没有设置任何命令,所以默认为空。如果需要,可以在这里添加自定义命令,以便在达到断点时执行特定的操作。

然后点击define,如果出现这个,不用管,选择是就行,然后选择close;

然后我们运行,可以看到运行5次后,程序在断点处停了下来。

2.依靠变量的读取或者写入次数触发中断

我们找个变量,将变量添加到watch窗口。

右击该变量,选择Set Access Breakpoint at 

我们选择在Acess中选择读取或者写入,count写读入或者写入的次数

比如我们写5,那么在I被写入5次时,将触发断点

3.当变量等于某个值时触发断点

我们找个变量,将变量添加到watch窗口。右击该变量,选择Set Access Breakpoint at 

删除Expression中的内容,写入咱的判断条件,在Acess中选择Read或者Write,点击Define,运行程序

可以看到,程序将会在i==10的语句停下

4.打印信息

意思是当程序运行到这里时,就不触发断点了,而是打印个信息

5.条件+打印

意思是程序满足了条件,程序就不中断了,会打印一下信息

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值