← 返回文章库

用 AI 调试硬件 bug:把串口日志和编译错误喂给它

最后更新 2026-06-20
⏱ 约 11 分钟 🟢 软件/低风险
你将学到
  • 区分编译期错误和运行期异常两类硬件 bug,知道各自的典型症状
  • 学会向 AI 提供完整调试信息(报错全文、串口输出、代码、板型库版本、接线)
  • 读懂 ESP32 三种常见崩溃日志:Guru Meditation、WDT 复位、Brownout 欠压
  • 分清 AI 擅长的代码 bug 和它只能给方向的硬件物理问题

板子一上电就疯狂重启,串口里刷出一串你完全看不懂的十六进制地址,最后跳出一行 Guru Meditation Error。你盯着看了十分钟,不知道是代码写错了,还是线接错了,还是板子坏了。这种时刻,绝大多数硬件新手会直接放弃。

但这恰恰是 AI 最能帮上忙的环节。调试不是要你凭空想出答案,而是把现场证据交给一个见过几百万条类似日志的助手,让它帮你缩小怀疑范围。前提是你得先会动手做最基础的开发环境搭建——如果你连串口监视器都没打开过,先去看 搭好你的 AI 硬件开发环境,再回来读这篇。

硬件 bug 分两类,先认清你卡在哪一类

把你遇到的麻烦先归一下类,这决定了你该往哪个方向喂证据。

第一类是编译期错误。 代码还没烧进板子,编译就红了。常见原因就那么几个:

  • 库缺失:报 No such file or directory 加一个头文件名,多半是某个库没装。
  • 版本不符:库装了但 API 对不上,报 error: 'xxx' was not declared in this scope,常是库升级后函数名改了。
  • 语法错误:少个分号、括号不配对,编译器会指到具体行号。
  • 分区表/板型不对:ESP32 烧大程序时报 Sketch too big,是分区方案选小了,工具菜单里换 Huge APP 即可。

编译期错误是 AI 的主场。报错信息是结构化的文本,它读一眼就能告诉你装哪个库、改哪行。

第二类是运行期异常。 编译过了、烧进去了,但板子行为不对:

  • 上传失败:卡在 Connecting....____ 然后超时,多半是没按 BOOT 键或驱动没装。
  • 串口乱码:刷出一堆方块和问号,几乎都是波特率设错了(ESP32 默认 115200,你设成了 9600)。
  • 重启循环:每隔一两秒重启一次,进不去你的主程序。
  • 读数不对:传感器一直读 0 或读满量程,可能是接线、也可能是初始化代码。
  • WiFi 连不上:卡在连接,或连上又掉。

运行期异常更难缠,因为证据藏在串口日志里,你得会读。

喂什么给 AI:别只截一行报错

这是新手最常犯的错。截图只截了最后那行红字,问 AI「这是什么错误」。AI 只能瞎猜,因为关键信息在前面。一份合格的调试请求应该包含:

  1. 完整报错全文——从编译输出的第一行红字开始,连同前面的警告一起复制。错误的根因常在第一条 error,后面都是连锁反应。
  2. 串口 Serial 输出——把崩溃前后的完整日志贴上,尤其是地址回溯(backtrace)那几行。
  3. 你的代码——至少是出问题的那个函数,最好是完整 .ino。
  4. 板型和库版本——「ESP32 Dev Module,arduino-esp32 3.0.2,DHT sensor library 1.4.6」。版本号能让 AI 判断是不是已知的兼容性坑。
  5. 接线——哪个传感器接到哪个引脚,供电是 USB 还是外接电源。物理连接 AI 看不到,你不说它永远不知道。

一句话原则:把你眼睛能看到的全部现场,都倒给它。信息越全,它的判断越准。

读懂 ESP32 三种崩溃日志

ESP32 的串口崩溃信息看着吓人,其实就三种常见类型,认得它们你就赢了一半:

Guru Meditation Error。这是 ESP32 的核心崩溃,常跟着 LoadProhibitedStoreProhibited。意思是程序访问了一个非法内存地址——九成是代码 bug,比如用了空指针、数组越界、或者某个对象还没初始化就调用了。后面那串 backtrace 地址,AI 配合你的代码能反推出崩在哪一行。

WDT 复位(看门狗)。日志里出现 Task watchdog got triggeredrst:0x8 (TG1WDT_SYS_RST)。看门狗是个定时器,你的代码如果在某处卡死太久(比如死循环、或 delay() 时间过长、或某个网络请求一直不返回),看门狗就强制重启板子。这通常是代码逻辑问题。

Brownout 欠压复位。日志里明晃晃一行 Brownout detector was triggered。这几乎可以直接判定为供电不足——电压瞬间掉到芯片工作下限以下,板子保护性重启。常见于:用了劣质 USB 线、电脑 USB 口供电弱、或者你接了个大电流外设(电机、WiFi 发射峰值、舵机)把电压拉垮了。这是硬件问题,不是代码问题,换条好线或加个稳压供电就解决。供电这件事的原理可以看 电源与稳压

记住这个对照:Brownout 看电源,WDT 和 Guru 看代码。

一个真实工作流:从一段日志到锁定供电

假设你的板子每隔两秒重启一次,你打开串口监视器,把日志贴给 AI:

rst:0x7 (TG0WDT_SYS_RST),boot:0x13 (SPI_FAST_FLASH_BOOT)
Brownout detector was triggered
ets Jun  8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13

AI 会指出:日志里有 Brownout detector was triggered,这是欠压复位,问题在供电而不是你的代码。它给的假设是:USB 供电不稳,或有大电流外设拉低了电压。

接下来轮到你动手验证——这一步 AI 替不了你:

  1. 换一条质量好的、短一点的 USB 数据线(很多线只能充电不能稳定供电)。
  2. 直接插电脑后置 USB 口,别用前面板或 hub。
  3. 如果你接了舵机、电机、继电器,先把它们拔掉,看是否还重启。
  4. 还不行,就用万用表量一下 3.3V 引脚的实际电压,看是否在峰值时掉压。

每验证一步,把结果反馈给 AI:「拔掉舵机后不重启了。」它就能进一步确认是舵机的瞬时电流问题,建议你给舵机单独供电。

这就是 AI 调试的迭代节奏:贴日志 → 拿到一个假设 → 你动手验证 → 反馈结果 → 缩小范围。一轮一轮逼近,而不是指望第一句话就给你终极答案。

你应该看到什么

贴完完整日志后,一个靠谱的 AI 回复应该是这样的:它先指出日志里的关键词(比如「我注意到这里有 Brownout detector」),然后给出方向性判断(「这通常意味着供电不足,而非代码问题」),最后列出几条可验证的排查步骤让你逐一试。

不应该做的是:在你只给一行报错时就斩钉截铁说「这是你第 23 行的 bug」。如果它这么干,要么是你信息给全了它有把握,要么就是它在猜——这时候你要警惕,它给的「可能原因」是线索不是结论。任何 AI 的判断都要你上手验证才算数,这件事的方法论详见 让 AI 帮你核对硬件事实

常见故障 × AI 该怎么帮你

症状 日志关键词 大概率方向 AI 能帮到哪
板子反复重启 Brownout detector 供电不足(硬件) 判定欠压,但换线/量电压得你来
隔几秒就复位 Task watchdog/WDT 代码卡死/死循环 配合代码找出卡住的那段逻辑
上传卡 Connecting Failed to connect 没进下载模式/驱动 提示按 BOOT、装 CP2102 驱动
串口全是乱码 方块、问号 波特率不匹配 一秒指出改成 115200
Guru Meditation LoadProhibited 空指针/越界(代码) 用 backtrace 反推崩溃行
传感器读数恒定 无崩溃,读 0 或满值 接线或初始化 给方向,接触不良只能你查

两个进阶变体

变体一:让 AI 帮你加调试打印缩小范围。 当板子在某个不明位置卡死、日志又没明确报错时,直接问 AI:「帮我在这段代码的关键步骤之间加 Serial.println 打印,我想看它执行到哪一步停的。」AI 会在每个函数调用前后插入带标记的打印语句。烧进去再跑,串口最后打出的那条标记,就是卡死点的前一步。这是定位「无声卡死」的最有效手段。

变体二:让 AI 解读 I2C 扫描结果。 I2C 传感器读不出来时,跑一段 I2C scanner,它会扫出总线上所有设备的地址。把结果贴给 AI:「扫到了 0x76,但我的传感器手册说是 0x77。」AI 立刻能告诉你:要么地址跳线/SDO 引脚拉错了电平,要么你代码里写死的地址不对。扫不到任何地址(No devices found),那就是接线断了或没上拉电阻——又回到硬件层面,得你查线。

动手挑战

故意造一个错误,看 AI 怎么判断。最简单的:把一个传感器的 VCC 线拔掉(断电),保持代码不动,重新运行。观察串口输出,然后把日志原样贴给 AI,问它「为什么读不到数据」。

它大概率会给几个方向:检查接线、检查 I2C 地址、检查供电。注意它给不出确定答案——因为「线被拔了」这种物理事实它看不见。这正是这篇要你记住的边界:AI 对代码强,对接线、供电、接触不良这些物理问题只能指方向,最后得你拿万用表上手量。 体会一次这种「AI 给线索、你做裁决」的分工,你以后调试就不会再迷信它的每一句话。

小结与下一步

硬件调试不可怕,可怕的是面对一屏看不懂的日志时的无力感。把这套流程记住:先归类(编译期还是运行期)→ 喂全证据(报错全文、串口输出、代码、板型库版本、接线)→ 读懂关键词(Brownout 看电源、WDT/Guru 看代码)→ 迭代验证(贴日志、拿假设、动手、反馈、缩小)。AI 是个见多识广的侦探,但它不是法官——线索它给,裁决你下。

调试时 AI 难免猜错,下一步学会系统地验证它的每一个判断,别被带偏:让 AI 帮你核对硬件事实。如果你想更进一步,让 AI 看懂接线图和原理图来辅助排查物理连接,去读 让 AI 读懂原理图与接线

内容有错、看不懂、或想看下一期?告诉我们 →

本文为公开资料的学习整理,非亲测。涉接线/花钱/合规的步骤请结合实物与官方最新资料验证,风险自负。见免责声明