vscode启动参数(如--disable-extensions)控制编辑器行为,与launch.json中args字段传递给被调试程序的参数完全分离;前者用于code命令启动编辑器,后者仅在"request": "launch"调试模式下生效,且须通过f5或“run and debug”面板选择配置才起作用。

VSCode 本身启动时(即运行 code 命令)支持的参数,和你在 VSCode 里调试/运行你的项目代码时传给 Python/Java/C++ 程序的参数,是两套完全不重叠的机制——前者控制编辑器行为,后者控制被调试进程行为。别混在一起配,否则参数既没进编辑器也没进你的脚本。
code 命令启动 VSCode 时怎么传参
这是指你从终端敲 code 打开编辑器本身时的参数,比如禁用扩展、指定工作区、只读打开等:
-
code --disable-extensions:彻底禁用所有扩展,排查干扰最有效 -
code --no-reopen-last --folder-uri file:///path/to/project:强制打开指定路径,且不恢复上次文件列表 -
code --user-data-dir /tmp/vscode-test:用独立用户数据目录启动,实现多实例隔离(比如同时开两个互不干扰的 VSCode) -
code --read-only ./README.md:以只读方式打开单个文件,防误改 - 路径含空格或中文?必须加双引号:
code "./my project",否则解析失败
注意:~ 波浪线不会被自动展开,code ~/project 会字面查找路径,不是你家目录下。
launch.json 的 args 字段根本不管用?检查模式类型
args 字段只在 launch 模式(F5 启动调试)下生效;如果你配置的是 "request": "attach"(附加到已有进程),args 完全被忽略——参数必须写在 python -m debugpy --listen ... 那条命令后面,而不是 launch.json 里。
- 确认
launch.json中配置的"request"是"launch"(不是"attach") - 如果用了 CMake 工具链,参数要写在
.vscode/settings.json的"cmake.debugConfig"下,不是launch.json - Java 用户:确保使用的是
"type": "java"调试器,且args放在对应 launch 配置内,不是env或runtimeArgs
为什么 F5 有参、右键“Debug Python File”没参
这个按钮默认走硬编码快捷配置,根本不读你的 args。想让它带参,必须同时满足两个条件:
- 在
launch.json对应配置中显式添加"purpose": ["debug-in-terminal"] - 该配置的
"name"必须是"Python: Current File (Integrated Terminal)"(名称必须一字不差)
更稳的做法:别点按钮,去左侧「Run and Debug」面板,从顶部下拉菜单选你配好的那个带 args 的配置,再点 ▶️。
参数写了但程序收不到?先盯 program 和 cwd
args 不生效,90% 不是参数写错了,而是目标程序压根没起来:
-
program必须是相对于${workspaceFolder}的有效路径,比如"./src/main.py",不能是"main.py"(缺引号)或绝对路径(跨机器失效) -
cwd强烈建议显式设为"${workspaceFolder}",否则open("config.json")这类相对路径操作会因工作目录不对直接报错 - Python 用户注意:
args传给的是你的脚本,不是python进程;想传--inspect给解释器,得写进runtimeArgs
真正容易被忽略的是:VSCode 从不校验 program 是否存在、cwd 是否可访问——它只管执行,失败了也不报错,看起来就像参数“丢了”。











