code runner 默认超时为200ms,会主动终止进程并报“time out”;需手动在settings.json中配置"code-runner.timeout": 30000(单位毫秒)以延长等待时间,否则无法支持python、php等启动较慢的语言。

Code Runner 默认超时是 200ms,不是卡死而是主动终止
VSCode 的 Code Runner 插件对所有语言默认设置了 code-runner.timeout 为 200 毫秒(即 0.2 秒),超过就直接 kill 进程并显示 “Time out”。这不是你代码慢,是插件“等不及”——尤其对 Python 脚本、PHP 启动、或带 I/O 的程序,200ms 远不够。
怎么改 timeout?必须手动设值,不能靠“自动识别”
Code Runner 不会根据语言或文件类型动态调整超时时间,它只认一个全局配置项:code-runner.timeout。不显式设置,就永远卡在 200ms。
- 打开 VS Code 设置(
Ctrl+,或Cmd+,)→ 搜索code-runner.timeout - 点击「在 settings.json 中编辑」,添加或修改这一行:
"code-runner.timeout": 30000
(单位是毫秒,30000 = 30 秒) - 保存后重启终端或重试 Run Code(
Ctrl+Alt+N) - 注意:该值只影响 Code Runner 自身的进程等待逻辑,不影响底层解释器(如 Python)本身的超时行为
PHP + Xdebug 场景下 timeout 更容易触发
如果你开了 Xdebug(尤其是 xdebug.start_with_request = yes),PHP 启动本身就会多花几十到几百毫秒初始化调试器。Code Runner 的 200ms 等待窗口根本不够用,结果就是“能跑出结果,但总报 Time out”。
- 临时解法:注释掉
php.ini中的xdebug.start_with_request = yes或zend_extension=xdebug(代价是无法断点调试) - 长期解法:把
code-runner.timeout设为至少5000(5 秒),再配合code-runner.runInTerminal: false确保耗时统计能捕获完整生命周期 - 别指望通过
set_time_limit()或 PHP 配置绕过——Code Runner 是在 shell 层面 kill 进程,PHP 内部超时机制完全不生效
timeout 改大了还是超时?检查执行路径是否真在跑你的代码
有时改了 timeout 没用,是因为根本没走到你写的逻辑——比如 Python 找不到模块、Node.js 解析 ESM 失败、C++ 编译失败后静默退出,这些都会让 Code Runner 在“启动阶段”就超时,而不是“运行阶段”。
- 先确认
code-runner.executorMap里对应语言的命令能手动在终端中成功执行(例如python -u script.py) - 确保
code-runner.runInTerminal为false:设为true会新开终端,VS Code 无法监听子进程生命周期,timeout 判定逻辑失效 - Windows 用户注意路径分隔符:如果 executorMap 里写了
C:path opython.exe,必须写成C:\path\to\python.exe或用正斜杠C:/path/to/python.exe











