GoLand本身不产生断点调试专用缓存,磁盘占用或断点异常主要源于Delve残留文件、Go构建产物($GOCACHE)及GoLand索引;需分别清理/tmp/dlv-(Linux/macOS)、%TEMP%\dlv-(Windows)、运行go clean -cache,并检查调试配置中“Build before run”和并行运行设置。

GoLand 本身不产生“断点调试专用缓存”,你看到的磁盘占用或异常行为,几乎都来自 Delve(dlv)进程残留、Go 构建中间产物,或 GoLand 自身索引/临时文件——但它们和断点本身无关。清理的关键是分清三类来源并针对性处理。
Delve 调试器启动后留下的临时文件在哪
Delve 在调试时会生成临时二进制(如 __debug_bin)、符号表缓存、以及运行时临时目录(/tmp/dlv-* 或 %TEMP%\dlv-*)。这些不是 GoLand 创建的,而是 dlv 进程自己写的。
- Linux/macOS:检查
/tmp下以dlv-开头的目录,可用find /tmp -name "dlv-*" -type d -mtime +1 -exec rm -rf {} +清理 24 小时前的残留 - Windows:PowerShell 中运行
Get-ChildItem $env:TEMP\dlv-* -Directory -ErrorAction SilentlyContinue | Where-Object {$_.LastWriteTime -lt (Get-Date).AddHours(-1)} | Remove-Item -Recurse - Delve 不会自动删这些目录;如果调试崩溃或被强制终止(如点击红色停止按钮但进程卡死),
os.RemoveAll没机会执行,就会堆积
GoLand 的调试配置里哪些设置会悄悄写缓存
GoLand 的 Run Configuration 中启用 “Allow running in parallel” 或勾选 “Build before run” 时,每次调试都会触发 go build,进而往 $GOCACHE 写 .a 文件——这不是调试独有,但高频调试会让它涨得特别快。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 关闭 “Build before run” 可避免重复构建(前提是已手动
go build过) - 禁用 “Allow running in parallel” 能防止多个
__debug_bin同时存在且互锁 - GoLand 不管理
$GOCACHE,所以即使你删了 GoLand 的 system/caches 目录,go clean -cache该跑还得跑
为什么改了代码、打了新断点,却总停在旧位置
这不是缓存没清干净,而是 Delve 加载了旧二进制或符号未刷新。常见于:
- 调试时修改代码但没重新 build,Delve 仍 attach 到旧
__debug_bin—— 此时必须点「重新启动」(不是「恢复」) - 启用了
GOOS=js或CGO_ENABLED=0等构建标签,但缓存混用了不同模式产物,go clean -cache后首次调试才能生效 - GoLand 的 File Watcher 自动 rebuild 失败(比如
go.mod改动触发了错误的依赖解析),导致调试器加载的仍是上一个成功的构建产物
真正要盯住的只有两处:$GOCACHE(用 go clean -cache)和系统临时目录里的 dlv-*;Delve 二进制本身(dlv.exe 或 dlv)是否被 GoLand 多个版本共用,才是调试行为异常的隐藏根源。










