VSCode调试卡顿的主因是workspaceStorage中语言服务与调试器生成的索引和快照,以及插件自建的cache和__pycache__;需定期清理旧子目录及插件缓存,同时清空Cache和GPUCache。

VSCode 本身不会因为“调试运行”这个动作单独生成可识别的缓存文件——真正占空间、拖慢响应、甚至导致断点失效的,是 workspaceStorage 里语言服务(如 Pylance、TypeScript Server)和调试器(如 Python Debug Adapter、js-debug)构建的索引与快照,以及插件在自己目录下偷偷建的 cache 或 __pycache__。
为什么删了 launch.json 还是卡?重点查 workspaceStorage
每次你用 F5 启动调试,VSCode 会为当前工作区在 workspaceStorage 目录下建一个 GUID 命名的子目录,里面存着:
- 语言服务符号索引(比如 Python 的 import 解析树、TS 的类型图谱)
- 调试会话快照(断点位置、变量历史、堆栈缓存)
- 搜索历史、最近打开文件列表等 UI 状态
这些不是临时文件,但长期不清理会越滚越大。尤其 WSL 工作区、含 node_modules 的前端项目、或大型 Python monorepo,单个子目录常达 2–5 GB。
路径:
- Windows:
%APPDATA%\Code\WorkspaceStorage - macOS:
~/Library/Application Support/Code/WorkspaceStorage - Linux:
~/.config/Code/WorkspaceStorage
操作建议:
- 进目录后按「修改日期」排序,删除所有修改时间早于 90 天的子目录
- 别全删——否则重开旧项目时跳转定义、搜索高亮都要重新索引几秒到几十秒
- 删完不用重启 VSCode,但下次打开对应工作区会略慢(重建索引)
插件自带的调试缓存:进 extensions 目录手动清
像 ms-python.python、ms-vscode.js-debug 这类调试核心插件,会在自己解压后的目录里建缓存子目录,例如:
-
~/.vscode/extensions/ms-python.python-2024.12.0/cache/(Pylance 符号缓存) -
~/.vscode/extensions/ms-vscode.js-debug/bootloader/dist/(预编译调试器二进制) -
~/.vscode/extensions/ms-python.python-2024.12.0/__pycache__/(Python 插件自身字节码)
这些目录不会随调试结束自动清理,中断写入后还容易损坏,导致“断点不命中”“变量显示 undefined”。
操作建议:
- 只删明确叫
cache、__pycache__、cached-data的子目录 - 别碰
out/、dist/、node_modules/—— 那是插件主逻辑,删了就直接报Failed to activate extension - PowerShell 一行定位(Windows):
Get-ChildItem "$env:USERPROFILE\.vscode\extensions" -Recurse -Directory | Where-Object {$_.Name -in 'cache','__pycache__','cached-data'} | Remove-Item -Recurse -Force
Cache 和 GPUCache 不是调试专属,但必须一起清
虽然它们属于 UI 渲染层缓存,但调试过程中频繁预览变量、打开大 JSON、渲染控制台输出,都会往 Cache 和 GPUCache 写数据。长期不清理会导致:
- 右键菜单弹出延迟
- 终端输入卡顿(尤其是调试中大量 print)
- 断点图标闪烁、跳转动画掉帧
路径:
- Windows:
%APPDATA%\Code\Cache和%APPDATA%\Code\GPUCache - macOS:
~/Library/Caches/com.microsoft.VSCode(注意不是 Application Support) - Linux:
~/.cache/Code
操作建议:
- 这两个目录可放心全删,重启后自动重建,不影响
settings.json或登录态 - 删之前务必确认无残留进程(
Code.exe、Code Helper.exe、node.exe),否则空间不释放 - 删完首次启动稍慢属正常,别误以为失败
最容易被忽略的是 Remote-WSL 或 Dev Containers 场景:它们会在 Remote 子目录下另建一套 workspaceStorage 和 cache,路径藏得更深,且不会出现在常规的 WorkspaceStorage 列表里。如果用过远程开发,记得先关连接再清理。


















