当前位置:网站首页>嵌入式开发:调试嵌入式软件的技巧
嵌入式开发:调试嵌入式软件的技巧
2022-07-26 14:11:00 【粤嵌教育】
调试是每个开发人员都想避免的任务,但不幸的是,它是软件开发中不可避免的罪恶。到了卷起袖子开始调试的时候,每个开发人员都应该记住7个技巧。
技巧 1——采取可控的步骤
当一个bug爬进嵌入式软件时,开发人员的第一反应是跳入代码并开始修改。它们通常是随意的,几乎是随机的,而不是以一种受控制和受指导的方式做出改变。嵌入式软件开发不是蛮荒的西部。即使是最简单的bug的解决也应该包括检查可用的数据,评估它,假设最可能的原因,更新然后测试。如果改变不能解决问题,新的数据应该出现,然后帮助过程重复。
技巧2——增加断言密度
ASSERT宏是一个很好的工具,开发人员可以用它来验证代码中的假设。令人惊讶的是,许多开发人员没有花时间将它们放入他们的代码中。代码库的断言密度通常是漫长而痛苦的调试会话之间的差异,或者是失败假设发生时的陷阱。ASSERT可以帮助开发人员立即发现错误或假设失败。
技巧3——使用数据记录器
关于软件如何运行的信息是嵌入式软件工程师调试时最有用的工具。拥有诸如任务何时开始和完成、它们是否被抢占等性能信息以及其他细节可能是至关重要的。使用日志是开发人员深入了解软件的一个很好的方式。日志可以像RAM缓冲区、写入外部闪存的文件一样简单,也可以像传输到远程位置的编码数据一样复杂。在任何情况下,日志文件都是收集调试和系统分析信息的好方法。

技巧4——使用高级断点
开发人员熟悉使用标准断点,只需双击一行代码的左边就可以打开标准断点。许多IDE具有更高级的断点功能,但很少被利用。高级断点的一个例子是设置一条线,当变量达到某个值时断开。使用高级断点可以大大减少调试时间,并使难以捕捉的错误更容易发现。
技巧5——再次查看数据手册
调试外设可能特别困难。现代微控制器可以有10个寄存器来设置一个外设。外设设置并不总是显而易见或有据可查的。更糟糕的是,正确设置的细节通常不在单个数据手册中。只看一个是不够的。当硬件运行不正常时,请反复查看数据表。
技巧6——监控调用堆栈
开发人员有时会质疑他们最初是如何找到特定的代码行的。IDE包含一个调用堆栈窗口,可以准确地显示这些信息。调用堆栈显示了调用了哪些函数以及调用的顺序,揭示了对跟踪bug非常有用的信息。
结论
不管你花很多时间调试还是很少时间,事实是作为嵌入式开发人员这是不可能避免的。使用本文中的技巧有助于使调试变得更容易接受。
边栏推荐
- [mathematical modeling] summary of common basic models
- Low power multi-channel wfas1431 wireless data acquisition and transmission instrument operation process description
- gdb常用命令
- Prediction and value evaluation of technology fusion relationship based on multiple features
- 多线程——线程池
- UDP multithreaded online chat
- 『SignalR』.NET使用 SignalR 进行实时通信初体验
- Comparison between agile development and Devops
- OA项目之我的会议
- A survey of machine learning based technology term recognition
猜你喜欢

Research on technology subject division method based on patent multi-attribute fusion

MySQL-03 数据库操作

Docker integrates the redis sentinel mode (one master, two slave and three sentinels)

关于存储芯片的入门基础知识

Disease knowledge discovery based on spo semantic triples

Comparison between agile development and Devops

Mysql-03 database operation

Inspiration from brain: introduction to synaptic integration principle in deep neural network optimization

Research on prediction of user churn in online health community based on user portrait

Digital collections accelerate the breaking of the circle and help the industry find new opportunities
随机推荐
Rotation of 2D conversion, transform origin of 2D conversion center point and scale of 2D conversion
Plato Farm有望通过Elephant Swap,进一步向外拓展生态
The difference between V-model and.Sync modifier
Focus on building four "highlands" and join hands with partners to build the national cloud!
Uni app from creation to operation to wechat developer tool
在检测分割中一些轻量级网络模型(自己学习的笔记分享)
C语言贪吃蛇-链表和指针练习
『SignalR』.NET使用 SignalR 进行实时通信初体验
MySQL-03 数据库操作
win10安装Dexdump并脱壳
Plato Farm有望通过Elephant Swap,进一步向外拓展生态
敏捷开发与DevOps的对比
Circular queue (implemented in C language)
uni-app从创建到运行到微信开发者工具
ISCC2021 LOCKK题解
UDP multithreaded online chat
1-to-1 live broadcast source code - 1-to-1 voice chat source code
Job 7.25 sorting and searching
TDengine 助力西门子轻量级数字化解决方案 SIMICAS 简化数据处理流程
[GYCTF2020]FlaskApp