news 2026/4/15 20:25:36

嵌入式调试很难?这份指南,让你一看就懂,上手就用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
嵌入式调试很难?这份指南,让你一看就懂,上手就用

一、核心思想:像侦探一样找问题

基本口诀

一看二查三缩小,四验证五预防

  • 一看:观察现象,收集信息

  • 二查:检查最可能的原因

  • 三缩小:把问题范围缩小

  • 四验证:确认找到了真正原因

  • 五预防:防止问题再次发生

二、六大常见问题与快速定位法

1. 程序死机或重启(最常见)

可能原因:内存溢出、数组越界、堆栈溢出、硬件故障

快速检查清单

□ 1. 先重启,看是否能正常运行 □ 2. 查看重启前的最后一条日志 □ 3. 检查最近修改的代码 □ 4. 测量内存使用量(堆栈还剩多少) □ 5. 检查中断处理是否太长

简单测试

// 堆栈使用检查(简单版) void check_stack_usage() { char stack_probe; // 如果这个值接近栈底,说明栈快满了 printf("栈地址:%p\n", &stack_probe); }

2. 外设不工作(UART、SPI、I2C等)

排查顺序

  1. 电源和时钟:设备供电了吗?时钟使能了吗?

  2. 引脚配置:引脚模式设置对了吗?

  3. 参数匹配:波特率、数据位等两边一致吗?

  4. 信号测量:用示波器看波形

记忆口诀电时引脚三要素,参数波形最后查

3. 数据出错或乱码

检查顺序

  1. 缓冲区大小:发送的数据超过缓冲区了吗?

  2. 数据类型:int、float在不同平台大小不同

  3. 字节顺序:大小端问题

  4. 同步问题:数据没准备好就读取了

4. 程序跑飞(执行不正常但没死机)

快速诊断

// 在关键位置添加标记 void important_function() { GPIO_SetBit(LED1); // 灯亮表示进入函数 // ... 你的代码 GPIO_ResetBit(LED1); // 灯灭表示离开函数 }

5. 内存泄漏(越来越慢,最后死机)

简单检测法

  1. 记录法:每次申请内存时记下来,释放时删除记录

  2. 压力测试:让程序长时间运行,观察内存变化

  3. 边界检测:在内存块前后加特殊标记

6. 中断问题

常见错误

  • 中断

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 2:54:00

QT/C++ 程序启动时检查程序是否已经启动

关键词:QT程序重复启动检查使用场景:不建议程序被多次启动的情况:例如程序启动后连接了某些设备,而操作用户没注意到程序已经启动了,又打开了一次程序,然后出现连接被占用等问题。代码实现:可以…

作者头像 李华
网站建设 2026/4/9 12:13:33

层合板多层损伤投影叠加后处理工具

一般我们做仿真,往往前处理工作占40%,后处理工作占40%。中间搞本构的时间反而没那么久。对于一些特殊仿真工况来说,尤其是模拟多工况,一些参数需要在不同工况之前传递。这可能需要同时用到前处理和后处理方法。除此之外&#xff0…

作者头像 李华
网站建设 2026/4/7 20:04:16

超实用 U 盘启动盘制作教程:2 种工具 + 详细步骤,小白也能上手

U 盘启动盘是电脑应急必备工具,不管是系统崩溃重装、丢失数据抢救,还是硬件故障排查,都能派上大用场。下面分享 2 款常用工具的制作方法,步骤精简易懂,新手也能快速掌握。 一、U 盘启动盘的核心作用 系统重装&#x…

作者头像 李华
网站建设 2026/4/15 12:04:20

R语言实现流动性覆盖率(LCR)动态监控(附完整代码)

第一章:流动性覆盖率(LCR)与金融风险管理流动性覆盖率(Liquidity Coverage Ratio, LCR)是巴塞尔协议III中引入的关键监管指标,旨在衡量金融机构在压力情景下能否依靠高流动性资产满足未来30天的净现金流出。…

作者头像 李华