Arduino IDE编译ESP32代码时出现数组越界运行时错误求助
树莓派64位系统下Arduino IDE 1.8.13编译ESP32代码的索引越界问题
问题描述
我在树莓派64位系统上使用Arduino IDE 1.8.13开发ESP32代码。首次编辑脚本并上传成功后,再次编译上传会触发如下panic错误,且所有脚本都出现这个问题。但将脚本保存关闭后重新打开,就能正常编译上传。我有多年Arduino开发经验,这个问题是近期才出现的,求排查和解决方法。
错误日志
panic: runtime error: index out of range [5] with length 5 goroutine 1 [running]: arduino.cc/builder.(*includeCache).Next(...) arduino.cc/builder/container_find_includes.go:209 arduino.cc/builder.findIncludesUntilDone(0x4000080400, 0x40002427b0, 0x15bd40, 0x4000aa1ef0, 0x40002ac115, 0x8, 0x0, 0x0) arduino.cc/builder/container_find_includes.go:321 +0x103c arduino.cc/builder.(*ContainerFindIncludes).Run(0x2b9608, 0x4000080400, 0x41bc3c3c, 0x0) arduino.cc/builder/container_find_includes.go:149 +0x4cc arduino.cc/builder.runCommands(0x4000080400, 0x40004dfc38, 0x22, 0x22, 0x7f00000001, 0x400, 0x400) arduino.cc/builder/builder.go:191 +0xcc arduino.cc/builder.(*Builder).Run(0x4000093ea8, 0x4000080400, 0x7fe51762bc, 0x34) arduino.cc/builder/builder.go:124 +0x7f0 arduino.cc/builder.RunBuilder(...) arduino.cc/builder/builder.go:222 main.main() arduino.cc/arduino-builder/main.go:338 +0x624 arduino-builder returned 2 Error compiling for board ESP32 Dev Module.
排查及解决建议
- 清理Arduino IDE缓存:
找到Arduino的缓存目录(默认路径为~/.arduino15/cache),删除目录内所有文件,重启IDE后重新测试编译。 - 更新ESP32核心库:
在IDE中依次点击「工具→开发板→开发板管理器」,搜索并找到ESP32库,更新至最新稳定版本——旧版本核心库可能存在与64位系统不兼容的缓存逻辑bug。 - 更换Arduino IDE版本:
1.8.13版本较陈旧,可尝试升级到1.8.x系列的最新版本,或降级到之前能正常工作的旧版本,排查是否为IDE本身的bug导致。 - 禁用自动保存功能:
打开IDE的「文件→首选项」,取消勾选「自动保存」选项,手动保存代码后再执行编译操作,避免自动保存过程中缓存状态异常。 - 检查系统权限:
确保当前用户对Arduino安装目录、缓存目录以及项目文件夹拥有完整的读写权限,权限不足可能导致缓存文件损坏或写入异常。 - 重新安装Arduino IDE:
备份好项目文件和IDE偏好设置后,彻底卸载当前IDE,重新下载适配树莓派64位系统的安装包进行安装,排除安装文件损坏的可能性。
内容的提问来源于stack exchange,提问作者Steve Gale
相关产品推荐
相关产品推荐

