0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Dp1040 来源:嵌入式技术开发 作者:嵌入式技术开发 2023-08-04 09:34 次阅读

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

比如,想要在一个循环的第N次停下来,如果手动打断点,那就要不停的点击单步运行,直到循环运行到第N次。

再比如,程序运行过程中变量不知何时被改变了,又不好定位,手动打断点就不知打在哪里。这时就要用到一些断点的高级用法。

1、设置断点的运行次数

以下面程序为例,在循环的第十次将程序停止。首先在循环中手动打一个断点:

a7b5cc5a-325e-11ee-9e74-dac502259ad0.png

点击Debug菜单,选择BreakPoints:

a7d847bc-325e-11ee-9e74-dac502259ad0.png

弹出下面菜单:

a80bef04-325e-11ee-9e74-dac502259ad0.png

最上面的断点是手动打的,双击该断点,会看到Expression会显示该断点的信息,修改Count的值为10,点击Define,然后关闭该窗口。这里说明一下:

Expression为表达式,即断点的条件,可以看到,手动设置的断点结尾为123,表示在main.c文件的123行。这里支持基本的>、<、==、!=等操作符。

Count为次数,表示运行多少次中断一次,手动设置的断点Count都是1。

Command为命令,表示到达该断点时执行的命令,默认为空。

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

a81286de-325e-11ee-9e74-dac502259ad0.png

2、变量匹配断点

将变量添加到Watch窗口,右击选择Set Access BreakPoint at xxx。还是弹出刚才的菜单:

a8445dbc-325e-11ee-9e74-dac502259ad0.png

a85c7550-325e-11ee-9e74-dac502259ad0.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时程序会停止。

a88270e8-325e-11ee-9e74-dac502259ad0.png

4、打印信息

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

a8bcf38a-325e-11ee-9e74-dac502259ad0.png

a8e15a04-325e-11ee-9e74-dac502259ad0.png

5、条件匹配打印信息

还可以将3和4组合使用,如下:

a8ecf9b8-325e-11ee-9e74-dac502259ad0.png

则AD==10时,程序不中断,在Command窗口打印信息。 断点的高级用法还有很多种,不同的表达式,不同的指令等,具体可查阅Keil的使用帮助文档。

a9275d24-325e-11ee-9e74-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 调试
    +关注

    关注

    7

    文章

    574

    浏览量

    33906
  • 程序
    +关注

    关注

    116

    文章

    3779

    浏览量

    80896
  • keil
    +关注

    关注

    68

    文章

    1212

    浏览量

    166731
  • 断点
    +关注

    关注

    0

    文章

    12

    浏览量

    7703
  • Watch
    +关注

    关注

    0

    文章

    99

    浏览量

    15125

原文标题:Keil调试时,设置断点的高级用法

文章出处:【微信号:玩点嵌入式,微信公众号:玩点嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何利用keil设置变量值改变时调试断点

    如何利用keil设置变量值改变时调试断点
    发表于 12-24 07:13

    KEIL断点调试窗口的常规用法有哪些

    程序运行过程中的数据是怎么修改的?在哪里修改的?KEIL断点调试窗口的常规用法有哪些?
    发表于 02-17 06:32

    keil在线调试无法设置断点怎么解决?

    使用的是Keil IDE及Jlink仿真器,但是keil启动在线仿真时无法设置断点,仿真前设置断点
    发表于 11-03 06:11

    基于Keil的入门实例教程

    基于Keil的入门实例教程: 1 Keil工程文件的建立、设置与目标文件的获得3 Keil 程序调试窗口2
    发表于 08-10 08:36 355次下载

    Keil调试命令,在线汇编与断点设置

    本章介绍常用的调试命令,利用在线汇编,各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用。
    发表于 01-09 11:29 62次下载

    Keil调试命令、在线汇编与断点设置

    Keil调试命令、在线汇编与断点设置上一讲中我们学习了如何建立工程、汇编、连接工程,并获得目标代码,但是做到这一步仅仅代表你的源
    发表于 01-18 09:38 1.1w次阅读
    <b class='flag-5'>Keil</b>的<b class='flag-5'>调试</b>命令、在线汇编与<b class='flag-5'>断点</b><b class='flag-5'>设置</b>

    VI调试(设置断点)

    【LabVIEW从入门到精通】2.4.2 VI调试(设置断点)
    发表于 01-08 15:44 0次下载

    python断点调试方法

    本文主要介绍了python断点调试方法,pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置
    发表于 01-14 10:44 7271次阅读
    python<b class='flag-5'>断点</b><b class='flag-5'>调试</b>方法

    python程序调试设置条件断点

    本文主要介绍了python程序调试设置条件断点。实际开发中,调试代码通常要花费比新编写代码更多的时间,选择合理的调试方法和工具对于程序工作
    发表于 01-14 11:39 6265次阅读
    python程序<b class='flag-5'>调试</b>中<b class='flag-5'>设置</b>条件<b class='flag-5'>断点</b>

    Keil软件实验教程之Keil调试命令和在线汇编与断点设置

    ,绝大部份的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利用在线汇编、各种设置断点
    发表于 07-15 16:47 11次下载
    <b class='flag-5'>Keil</b>软件实验教程之<b class='flag-5'>Keil</b>的<b class='flag-5'>调试</b>命令和在线汇编与<b class='flag-5'>断点</b><b class='flag-5'>设置</b>

    Keil调试命令和在线汇编与断点设置

    ,绝大部份的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利用在线汇编、各种设置断点
    发表于 03-26 09:21 34次下载

    Keil调试命令和在线汇编与断点设置

    ,绝大部份的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利用在线汇编、各种设置断点
    发表于 03-26 09:21 75次下载

    Segger的无限Flash断点调试功能

    J-Link支持一项名为“无限Flash断点”(Unlimited Flash Breakpoints)的调试功能。“无限Flash断点”允许用户在Flash中调试
    的头像 发表于 05-07 09:54 2025次阅读

    Keil设置断点高级用法

    跟上一步一样,在Watch窗口,右击变量选择Set Access BreakPoint at xxx。勾选Access方式Read或Write,删除Expression下原来的内容,填写表达式“AD== 10”。点击Define。这样当AD==10时程序会停止。
    的头像 发表于 05-10 14:17 4441次阅读

    GDB调试里怎么设置断点

    本篇讲解使用GDB调试Linux应用程序,以下以 hellowld.c 为例介绍 GDB 的调试入门: 设置断点   disable                 # 禁用所有
    的头像 发表于 10-04 16:10 1183次阅读