Windows 10下Mbed使用GDB调试STM32出现虚拟内存耗尽错误如何解决?
Windows 10 Mbed环境GDB虚拟内存耗尽错误解决方案
报错信息:
/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-338_20211018_1634516203/src/gdb/gdb/utils.c:671: internal-error: virtual memory exhausted: can't allocate 4064 bytes. A problem internal to GDB has been detected, further debugging may prove unreliable.
解决方案
- 更换匹配的工具链版本:当前报错来自GCC 10配套GDB的内部bug,建议卸载当前工具链,安装Mbed官方推荐的
GNU Arm Embedded Toolchain 9-2020-q2-update版本,可解决绝大多数该类内存溢出问题。 - 禁用GDB高内存占用特性:在调试启动脚本或gdbinit配置文件中添加以下命令:
set auto-load safe-path / set print pretty off set demangle-style none set disable-randomization off - 调整Windows虚拟内存配置:进入「此电脑-属性-高级系统设置-高级-性能-设置-高级-虚拟内存」,将虚拟内存最小值设为物理内存的1.5倍,最大值设为物理内存的3倍,保证虚拟内存所在磁盘剩余空间不低于20GB,重启系统后生效。
- 裁剪Mbed项目调试符号:在项目
mbed_app.json中添加如下配置,降低调试信息体积:
配置完成后重新编译项目再启动调试。{ "target_overrides": { "*": { "debug-info-level": "limited" } } } - 调整WSL内存限制(若使用WSL运行调试环境):在Windows用户目录下创建
.wslconfig文件,写入如下配置:
保存后在PowerShell执行[wsl2] memory=8GB swap=4GBwsl --shutdown重启WSL即可生效。
内容的提问来源于stack exchange,提问作者CH_bot
相关产品推荐
相关产品推荐

