广告

如何充分利用各种类型的断点

2021-09-18 12:10:45 IAR 阅读:
软件开发者在调试时离不开断点,但如何最好地利用断点呢?本文将指导开发人员如何利用每一个可用的断点来更快地调试程序。

在面向高可靠性应用开发MCU程序的过程中,工程师通常会遇到设定断点的问题,断点的合理使用对于更好地编程和MCU使用是一种挑战。借助新的工具,这些断点就可以发挥巨大的作用,成为开发工作中的利器。86uednc

断点的概念非常简单,因为它的作用是在指定指令之前中断程序的执行。实现方式可以是硬件或软件。然而,简单并不意味着它不能被用于复杂的调试组合中,以达到用简单的方式解决BUG的目的。事实上,软件开发者在调试时离不开断点,但如何最好地利用断点呢?86uednc

要更好地使用各种断点,开发人员不能仅靠经验或者直觉,需要借助一些先进的开发工具来完成,它们可以帮助开发人员去了解不同断点的特点和价值。例如,在IAR Embedded Workbench工具中,开发人员可以使用以下断点:86uednc

  • 代码断点
  • 条件代码断点
  • 具有读写访问的数据断点
  • 数据日志断点
  • 日志断点
  • 功率断点
  • Trace开始和停止断点

本文将指导开发人员如何利用每一个可用的断点来更快地调试程序。86uednc

代码断点

代码断点是最简单的断点。开发人员只需要选择C代码或者反汇编窗口中的ASM指令并设置断点即可。一旦断点被触发,程序就会暂停。此时,开发人员就可以检查变量、标志和寄存器的值。换句话说,开发人员现在拥有了完全控制权限。86uednc

86uednc

代码断点的数量受限于MCU硬件断点的数量,但如果代码在RUM中运行,开发人员利用软件断点,软件断点的数量则可以是无限的。即使数量有限,例如对于Arm Cortex-M,有6到8个断点,但开发人员也可以保存断点位置并在需要时禁用和启用断点。只需要选择显示View ->Breakpoints window,就可以选中/清除方框,也就是启用或禁用断点。86uednc

86uednc

在这种情况下,可以有6到8个以上的断点,但不能同时都激活。86uednc

默认情况下,IDE会设置代码断点。如果开发人员有一个I-jet仿真器,就可以在右键点击代码行时明确地选择一个flash断点。如果开发人员已经用完了现有全部硬件断点,这招会很有用。注意断点符号中的“F”说明改断点是Flash断点。IAR Embedded Workbench for Arm的7.60或更高版本中提供flash断点功能。86uednc

86uednc

条件代码断点

条件断点是代码断点与一些标志或变量(作为条件)的组合。设置好断点后,开发人员可以再次使用View ->Breakpoints window来查看所有断点,也可以通过右键点击并选择Edit option来设置额外参数。86uednc

86uednc

使用的语法类似于C语言的语法,包括==、>=和<=。例如,如果想让应用在计数器等于10的时候停止在断点,则可以使用“counter==10”。86uednc

86uednc

当需要在一个中断例程内设置断点时,这非常有用。如果没有条件,就不可能调试应用,因为程序将一直停止。使用标志或变量作为条件可以简化操作。此外,还可以进一步使用跳过计数器和条件检查,如truechanged86uednc

具有读写访问的数据断点

相比其他断点,数据断点有些不同,因为它们监测对特定内存地址、标志、变量或寄存器的读写访问。数据断点使用非常直截了当只需右键点击标志或变量,然后选择选项Set data Breakpoint即可。默认情况下,读和写的访问将被监测。如果开发人员想增加额外的设置,可以通过View->Breakpoints windowEdit option来完成。除了访问之外,还可以监测数据是否匹配。这意味着只有当数据匹配时,写或读的访问才会触发停止。选择“Edit”按钮,可以打开一个额外的窗口,可以选择绝对地址甚至是源代码行。如果是一个变量或标志,建议使用自动大小。如果需要监测更大的范围,应手动设置所需的大小。86uednc

86uednc

数据断点对于调试被应用破坏的标志和变量非常有用。一旦出现了读写访问,应用就会停止。另一种用法是堆栈溢出调查,只需要在堆栈大小的80-90%处设置一个数据断点,当溢出接近时,就可以停止应用,并一步步找到问题的根源。86uednc

数据日志断点

除了可监测读写访问的数据断点外,开发人员还可以使用数据日志断点。使用这些断点的目的是监测并以图形方式绘制特定变量或内存地址的值跟随时间的变化,这就能更轻松地比较多个变量,观察中断触发的情况。86uednc

86uednc

仿真器选项提供了时间轴、附加数据日志和数据日志总结,如下图所示。86uednc

86uednc

日志断点

除了代码断点和数据断点之外,开发人员还可以使用日志断点。这是一个特殊的断点,因为它只会暂时停止应用来打印一条信息。只有当断点被触发时,它才会显示选定的信息。86uednc

86uednc

每当断点被触发,一条信息就会显示在调试日志窗口中。配合计数器,我们就可以知道应用源代码的特定部分运行了多少次。86uednc

86uednc

功率断点

得益于IAR Embedded Workbench的功率调试技术,开发人员可以监控能耗并将其与源代码联系起来。这使得了解整个应用的能耗成为可能。这个概念也使得添加功率断点成为可能。可以设置一个阈值,比如25mA,一旦能耗超过这个值,调试器就会中断。86uednc

86uednc

设置阈值的操作非常简单。只需要打开I-jet -> PowerLog window,然后设置数值和对应的操作。86uednc

86uednc

这个功能很有用,可以保证不出现任何耗电浪涌或高于指定值的情况,而且通过这种分析,电池的使用寿命也会延长,开发人员可以放心让其应用长时间运行。虽然时间轴窗口不是必须的,但它能提供实时的能耗信息。86uednc

Trace开始和停止断点

最后要介绍的是Trace开始和停止断点。如果开发人员使用先进的仿真器,比如I-jet Trace for Arm Cortex-M或I-jet Trace for Cortex-A/R/M,就可以利用这些断点。这在分析应用特定部分时特别有用。Trace开始和Trace停止断点简单易用,只需在代码行中右键点击并决定跟踪的开始和结束位置即可。Trace缓冲区将只保存应用中指定代码行之间的指令。86uednc

86uednc

另外,开发人员也可以从时间轴上的Trace指令中得到函数调用的图形概览,这些函数调用信息是在Trace开始和停止断点之间捕获的。86uednc

86uednc

虽然I-jet Trace仿真器比标准JTAG/SWD仿真器更强大,但有时如果记录包含所有正常信息时,Trace调试变得很麻烦。为了避免收集数以百万计的非必要指令,使Trace调试变得简单明了,IAR Embedded Workbench提供了Trace开始和停止断点的功能。86uednc

  • 非常好的资料文档
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • 波兰网友拆德国产电源插排,内部竟是中国制造?! 本文将会介绍LogiLink LPS262U电源插排(接线板)——包含三个USB端口和两个Schuko插座——的内部结构及其简短测试。
  • 上海微系统所使用石墨烯纳米带研制出世界上最小尺寸的 非易失性相变随机存取存储器(PCRAM)被认为是大数据时代新兴海量存储的有希望的候选者之一。然而,相对较高的编程能量阻碍了 PCRAM 中功耗的进一步降低。利用石墨烯的窄边接触可以有效降低每个电池中相变材料的活性体积,从而实现低功耗运行。
  • 第三代半导体——碳化硅材料之制程与分析 SiC功率电子是加速电动车时代到来的主要动能。以SiC MOSFET取代目前的Si IGBT,不仅能使电力移转时的能源损耗降低80%以上,同时也可让芯片模块尺寸微缩至原本的1/10,达到延长电动车续航里程及缩短充电时间的功效。
  • 苹果iPhone 14 Pro、iPhone 14 Pro Max 将采用更快的 随着iPhone 14系列发布的临近,iPhone 14系列的内存供应商也被曝光。一份由DigiTimes发表的报道显示,今年晚些时候到达的"Pro"型号将配备6GB LPDDR5内存,这比当前一代的iPhone 13 Pro和iPhone 13 Pro Max都有6GB LPDDR4X内存提升了一代。
  • 国际象棋机器人Chessrobot夹断对手手指,意外还是设计缺 据悉,在7月19日的莫斯科国际象棋公开赛期间,一位7岁小男孩疑似因提前走子犯规手,意外被“对手”国际象棋机器人Chessrobot夹住手指,造成指骨骨折,该事件登上了热搜榜。该男孩是莫斯科9岁以下最强的30位棋手之一。
  • M2 Pro 和 M2 Max 或是苹果首款采用台积电3nm 工艺的 M1 Pro 和 M1 Max 最多可配置 10 核 CPU 和 32 核 GPU。借助 M2 Pro 和 M2 Max,Apple 有望突破这一门槛,为这两个领域带来更多的核心数量。目前M2 Pro相关的爆料很少,但据称M2 Max 有12 核 GPU 和 38 核 GPU。12 核 CPU 将包括 10 个性能核心和两个能效核心。
  • 小米12S Ultra游戏性能超越iPhone 13 Pro Max?高通骁龙 高通将骁龙8 Plus Gen 1的量产交给台积电之后,其生产技术带来了许多改进,其中之一是提高了游戏性能。众所周知,Apple 的 A15 Bionic 是目前公认的最快的移动 SoC,但这一认知却被小米 12S Ultra 搭配高通骁龙8 Plus Gen 1所颠覆。
  • 国内外两轮电动车发展趋势与风向 这两年大环境影响下,依靠“生态,低碳环保”理念,电动自行车逆势增长,势头强劲。朱文清指出:“虽然增量市场已经很强大了,但是我们要做好我们自己,把我们的产品做好,把我们的智能化产品做好就可以达到目标。”
  • 世界上尺寸最大的芯片Wafer Scale Engine-2打破了在单 Cerebras公司售价数百万美元的“全球最大AI芯片”Wafer Scale Engine-2又有新消息,在基于单个Wafer Scale Engine-2芯片的CS-2系统上训练了世界上最大的拥有200亿参数的NLP(自然语言处理)人工智能模型。
  • AMD介绍模块化芯片未来,将允许在定制芯片封装中混合非A 据EDN电子技术设计报道,AMD 近日详细介绍了模块化芯片的未来,AMD将允许客户在紧凑的芯片封装中实现多个裸片(也称为chiplet或compute tiles )。
  • 中国“天眼”收到外星信号?不,或许是无线电干扰 日前,《科技日报》报道称“中国天眼”已发现多个“疑似外星文明信号”,引起广泛关注。中国地外文明搜寻首席科学家张同杰教授透露称:“中国天眼”已经发现了几例“来自地球之外可能的科技痕迹和地外文明候选信号”。但经过进一步证实和排除后,他表示这些信号来自无线电干扰……
  • 一种具有触觉感应能力的仿生弹性机器人皮肤 科学家认为,给社交机器人安装类人体皮肤(或触觉传感器),可以实现安全、直观和接触丰富的人机交互。然而,现有的软触觉传感器存在一些缺点,如结构复杂、可扩展性差、易碎,这限制了它们在机器人全身皮肤上的应用。韩国科学技术高等研究院的一组研究人员与麻省理工学院的一位研究人员和斯图加特大学的另一位研究人员合作,开发了一种具有触觉感应能力的仿生弹性机器人皮肤。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了