常见坑
每一章对着一个报错或一个现象:先给出实测的原文,再到源码里找它从哪一行来,最后给出办法。机制在前面各部分讲过的,这里只链过去。复现环境写在每章里,都不需要硬件:本机的 probe-rs 0.32.0、依赖 probe-rs =0.32.0 的实验程序(FakeProbe 或自己写的软件模拟目标)、仓库自带的 coredump 夹具,以及 QEMU 里跑的固件。
- Error: No connected probes were found.:
Lister一个设备也没认出来;run、download、info加--dry-run也报,因为走 RPC 的命令先选探针;没权限的探针会被列出、报别的错;cargo-flash 的提示因为错误穿过 RPC 而不出现。 - No available hardware breakpoints:FPB 比较器用完;gdb server 把它当致命错误,整个 GDB 会话退出,DAP 只把那个断点标成未验证。
- probe-rs run 跑起来了,一行日志也没有:没有
_SEGGER_RTT符号又没给--scan-region时整场不读 RTT;控制块没初始化时每轮重试;两种都只写 debug 日志。 - The requested chip 'esp32c3' was not found in the list of known targets.:库用户没注册
probe-rs-espressif插件,或者注册晚于建Registry。 - ERROR: UNWIND: Failed to read value for register …:按 CFI 读栈失败;更危险的是帧指针坏了但仍指向 RAM,调用栈静默地少帧。
- PROBE_RS_TARGETS_DIR 设了,芯片还是找不到:编译期变量,运行时要用
--chip-description-path。
flowchart TB sel["选探针"] --> p1["1 No connected probes"] reg["按名字查目标"] --> p4["4 esp32c3 not found"] reg --> p6["6 TARGETS_DIR 不生效"] bp["设断点"] --> p2["2 断点用完"] poll["轮询 RTT"] --> p3["3 RTT 静默"] uw["栈展开"] --> p5["5 UNWIND 读失败"]
按发生的阶段看:第一、四、六个在 attach 之前(选探针、按名字查目标),第二个在设断点时,第三个在固件跑起来之后,第五个在停下后看调用栈时。
💬 关联讨论
发起讨论加载中...