跳转到内容

调试组件

debug 组件可用于调试 ESPHome 的问题。在启动时,它会打印一堆有用的信息,如重置原因、可用堆大小、ESPHome 版本等。 它还允许您获取相同的信息作为文本传感器,并监控 ESP 堆内存的状态(可用空间、最大可用块大小和碎片化级别)以及主循环时序。可以通过 logger 或 web server 组件(如果已配置)进行监控。

调试组件输出示例。
# 示例配置项
debug:
update_interval: 5s
text_sensor:
- platform: debug
device:
name: "设备信息"
reset_reason:
name: "重置原因"
sensor:
- platform: debug
free:
name: "堆可用空间"
block:
name: "堆最大块"
min_free:
name: "堆最小可用空间"
fragmentation:
name: "堆碎片化"
loop_time:
name: "循环时间"
psram:
name: "可用 PSRAM"
cpu_frequency:
name: "CPU 频率"
  • device (Optional): 报告以下设备信息:

    • ESPHome 版本

    • 启动时的可用堆大小

    • 闪存芯片大小、速度和模式

    • ESP32:

      • 芯片型号、核心数、修订版
      • 芯片功能(BLE / BT / WiFi_BGN / EMB_FLASH / EMB_PSRAM / …)
      • ESP-IDF 版本
      • EFuse MAC
      • 重置原因
      • 唤醒原因
    • ESP8266:

      • 芯片 ID、频率
      • 闪存 ID
      • SDK、Core 和 Boot 版本
      • 重置原因和信息

    接受 文本传感器 的所有选项。

  • reset_reason (Optional): 以人类可读的形式报告上次重启原因。接受 文本传感器 的所有选项。

  • free (Optional): 以字节为单位报告可用堆大小。传感器 的所有选项。

  • block (Optional): 以字节为单位报告堆上最大连续可用 RAM 块。传感器 的所有选项。

  • min_free (Optional): 以字节为单位报告启动以来的最小可用堆大小。这对于检测内存泄漏或高水位标记使用很有用。仅在 ESP32 和 LibreTiny 上可用。传感器 的所有选项。

  • fragmentation (Optional): 报告堆的碎片化指标 (0% 是干净的,超过约 50% 可能导致分配失败)。在带有 Arduino 2.5.2+ 的 ESP8266 和 ESP32 上可用。 传感器 的所有选项。

  • loop_time (Optional): 报告主循环连续迭代之间的最长时间。传感器 的所有选项。

  • psram (Optional): 以字节为单位报告可用 PSRAM。仅在 ESP32 上可用。传感器 的所有选项。

  • cpu_frequency (Optional): 以 Hz 为单位报告 CPU 频率。传感器 的所有选项。

该组件为在 Zephyr RTOS 上运行的 ESPHome 设备启用调试功能。 它有助于使用 SWD(串行线调试) 进行低级固件调试。它启用:

  • GDB 中的线程感知
    注入 Zephyr 线程元数据,以便在通过 SWD 连接时可以通过 GDB 检查所有活动线程。

  • 通过 RTT 的实时日志记录
    通过 SEGGER RTT(实时传输)启用日志输出,允许通过 SWD 进行非侵入式调试日志。