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

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

3天内不再提示

调试嵌入式软件的7个小技巧

PCB线路板打样 来源:LONG 2019-08-12 10:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

调试是每个开发人员都想避免的一项任务,但不幸的是,这是软件开发的必然之举。事实上,正如EDN的嵌入式研究所揭示的那样,嵌入式开发项目平均花费超过其总体努力的20%用于单独调试。当你的袖子卷起来并开始调试时,这里有一些提示可以帮助你。

提示1 -采取可控制的步骤

当一个bug进入嵌入式软件时,开发人员的第一直觉往往是跳入代码并启动做出改变。但是,开发人员的方法通常是偶然的,几乎是随机的,而不是以受控制的方式进行更改。嵌入式软件开发不是狂野西部。解决甚至最简单的错误应该包括检查可用数据,评估它,假设最可能的原因,更新代码,然后测试更新。如果变更没有解决问题,新数据至少应该被曝光,这有助于重复该过程。

提示2 -增加断言密度

ASSERT 宏是一个很棒的工具,可以在运行时返回错误消息断言的条件是错误的。开发人员可以使用此宏来验证其代码中的假设是否成立。令人惊讶的是,许多开发人员没有花时间将断言放入他们的代码中。代码库的 ASSERT 密度通常可能是长期和痛苦的调试会话之间的差异,也可能是失败假设发生时的陷阱。 ASSERT 可以帮助开发人员立即发现错误或假设失败。您的代码库的 ASSERT 密度是多少?

技巧3 -使用数据记录器

有关软件运行方式的信息是嵌入式软件工程师在调试时可以拥有的最佳工具。拥有诸如任务开始和完成时的性能信息,是否被抢占以及类似的细节都是至关重要的。记录所采取的操作是开发人员深入了解软件行为的好方法。日志可以像RAM缓冲区一样简单,文件写入外部闪存,也可以像传输到远程位置的编码数据一样复杂。

技巧4 -使用高级断点

开发人员熟悉使用IDE中可以打开的标准断点,只需双击一个断点即可代码的左边距。但是,许多IDE还具有更高级的断点功能,这是开发人员很少使用的功能。高级断点的一个示例是在变量达到某个值时设置要断开的行。使用高级断点可以大大减少调试时间,并且难以发现很容易发现错误。

提示5 -再次查看数据表

调试外围设备可能特别困难。现代微控制器可以在设置单个外设时涉及许多寄存器,这些外设设置并不总是很明显或有很好的记录。更糟糕的是,有关如何正确设置外设的详细信息通常并非都在一个数据表中。相反,信息的形式是“面包屑”,散布在家庭和外围数据表中,有时甚至在应用笔记中。仅仅查看一个文档是不够的。当硬件行为不端时,您需要反复查看数据表。

提示6 -监控调用堆栈

开发人员有时会质疑他们如何才能获得特定的代码行。 IDE包含一个可以准确显示该信息的调用堆栈窗口。调用堆栈显示调用了哪些函数以及以什么顺序调用,显示对于跟踪错误非常有用的信息。

提示7 -休息一下

调试可能是一项繁重的工作。深入研究软件和硬件的运作可以为开发人员提供隧道视野。开发人员有时需要通过继续执行其他任务或休息来退后一步。通过散步或做一些放松的事情离开系统将允许潜意识在有意识的思维休息时处理解决方案,以便当再次开始查看代码时,通常会有其他见解。

结论

无论是花费大量时间进行调试还是花费很少,事实上嵌入式软件开发人员都无法避免。使用本文中的提示有助于使调试更成功,因此更加可口。

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

    关注

    5186

    文章

    20146

    浏览量

    328795
  • PCB打样
    +关注

    关注

    17

    文章

    2977

    浏览量

    23333
  • 华强PCB
    +关注

    关注

    8

    文章

    1831

    浏览量

    29130
  • 华强pcb线路板打样

    关注

    5

    文章

    14629

    浏览量

    44386
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    加速调试嵌入式软件的五技巧

    调试嵌入式软件是我最不喜欢的行为,不幸地是,它却是必要的。值得庆幸地是,技术和工具链创新的进步衍生出大量的新技术,从而大大地加快了调试过程。下面让我们来看看其中一些方法,从传统的断点
    发表于 06-04 01:46 2121次阅读

    集成嵌入式平台加速了SoC和嵌入式系统的软件调试和启动

      这种跨学科的早期研究改进了设计硬件并加速了 SoC 和嵌入式系统的软件调试和启动。软件开发人员和硬件工程师都同意这是朝着正确方向迈出的一步。
    的头像 发表于 06-28 15:31 3078次阅读
    集成<b class='flag-5'>嵌入式</b>平台加速了SoC和<b class='flag-5'>嵌入式</b>系统的<b class='flag-5'>软件</b><b class='flag-5'>调试</b>和启动

    嵌入式系统的调试技巧

    调试与设计一样是嵌入式系统不可或缺的一部分。两者都可以正确地称为同一枚硬币的两面。考虑到物联网领域嵌入式系统的最新发展,工程师在调试和设计
    发表于 07-21 12:08 2735次阅读
    <b class='flag-5'>嵌入式</b>系统的<b class='flag-5'>调试</b>技巧

    嵌入式硬件调试软件调试

    时可能仅仅只需要调试嵌入式应用程序就可以了。在嵌入式系统的整个开发过程中,不同层次上的软件调试需要使用不同的
    发表于 03-10 10:44

    在VIM中如何实现对嵌入式软件调试

    gdb对嵌入式软件调试模式有哪几种?在VIM中如何实现对嵌入式软件调试
    发表于 04-27 06:04

    基于ARM的嵌入式系统软件设计

    嵌入式软件的启动代码嵌入式软件开发关键技术嵌入式实时操作系统程序的链接定位软件
    发表于 03-25 15:03 203次下载
    基于ARM的<b class='flag-5'>嵌入式</b>系统<b class='flag-5'>软件</b>设计

    嵌入式系统软件开发环境中调试器的设计

    调试软件开发流程中是一比较重要的环节,调试器是衡量一软件开发环境优劣的重要因素.本文对
    发表于 05-30 13:51 29次下载

    嵌入式远程调试工具的研究与实现

             在嵌入式软件开发中,调试是一重要的环节,调试
    发表于 09-11 09:48 16次下载

    嵌入式系统的远程调试

      1 基本方法   图1(a)是传统的嵌入式调试方法:主机PC通过串口与从机嵌入式系统相连,接收从嵌入式系统发来的调试信息并向
    发表于 08-30 10:23 1250次阅读
    <b class='flag-5'>嵌入式</b>系统的远程<b class='flag-5'>调试</b>

    嵌入式软件的打印调试信息的方法

    在我们的嵌入式开发中,常常把printf重定向到MCU的串口外设,再配合上位机界面软件,通过打印调试信息的方式来调试我们的嵌入式
    的头像 发表于 04-04 17:35 3829次阅读

    嵌入式软件是什么意思_嵌入式软件的分类有哪些

    本文首先阐述了嵌入式软件的概念,其次介绍了嵌入式软件的特征,最后介绍了嵌入式软件的分类。
    发表于 08-31 15:54 1.7w次阅读

    嵌入式软件的开发流程_嵌入式软件调试

    本文首先介绍了嵌入式软件的发展,其次阐述了嵌入式软件的开发流程,最后介绍了嵌入式软件
    发表于 08-31 16:02 6681次阅读

    如何实现嵌入式系统远程调试

    嵌入式系统随着目前科技的发展,正逐步融入人们的生活中。对于嵌入式系统,我们应该有所了解。就专业人员而言,他们对嵌入式系统早已驾轻就熟。为增进大家对嵌入式系统的认识,本文将对
    的头像 发表于 11-22 11:55 6678次阅读
    如何实现<b class='flag-5'>嵌入式</b>系统远程<b class='flag-5'>调试</b>

    嵌入式系统设计师学习笔记二十六:嵌入式软件程序设计①——嵌入式应用开发的过程

    嵌入式系统设计师学习笔记二十六:嵌入式软件程序设计①——嵌入式应用开发的过程一嵌入式应用项目的
    发表于 11-04 10:06 18次下载
    <b class='flag-5'>嵌入式</b>系统设计师学习笔记二十六:<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>程序设计①——<b class='flag-5'>嵌入式</b>应用开发的过程

    如何更快调试嵌入式软件,试试这五技巧!

    调试嵌入式软件是我最不喜欢的行为,不幸地是,它却是必要的。值得庆幸地是,技术和工具链创新的进步衍生出大量的新技术,从而大大地加快了调试过程。下面让我们来看看其中一些方法,从传统的断点
    发表于 02-08 17:03 2次下载
    如何更快<b class='flag-5'>调试</b><b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>,试试这五<b class='flag-5'>个</b>技巧!