code runner 默认不适用于算法题,因其将g++当作普通项目编译器使用,生成中间文件(如a.exe)、不支持重定向输入输出、无法传入测试数据文件,且不显示完整编译错误路径;需在settings.json中自定义cpp执行器,如"cpp": "cd $dir && g++ -std=c++17 -o2 -o a.exe $filename && ./a.exe",并确保input.txt存在。

Code Runner 为什么默认不适用于算法题?
它把 g++ 当成普通项目编译器用,但算法题需要:单文件编译、不生成中间文件、支持重定向输入输出、快速反复运行。默认配置下,code-runner.executorMap 的 C++ 条目会生成 a.exe 并静默执行,无法传入测试数据文件,也看不到编译错误的完整路径。
实操建议:
- 在
settings.json中覆盖 C++ 执行器,改成:"cpp": "cd $dir && g++ -std=c++17 -O2 -o a.exe $fileName && ./a.exe &1" - 确保工作目录下存在
input.txt,否则会卡住或报错No such file or directory - Windows 用户注意:PowerShell 默认禁用脚本执行,若报
ExecutionPolicy错误,改用cmd模式(加/c前缀)或临时设为RemoteSigned
CPH 插件的 test 命令失败常见原因
CPH: Test 不是调外部服务,而是起本地进程跑你代码 + 测试用例,失败基本都卡在环境链路上。
常见错误现象:
-
command not found: g++→g++没进系统PATH,检查终端里能否直接运行g++ -v -
error: ‘filesystem’ is not a member of ‘std’→ 编译器太老(如 MinGW 8.x),需升级到 MinGW-w64 11+ 或 MSYS2 + gcc 13+ - 测试用例没加载 → 文件名不匹配:CPH 默认找
in0.txt/out0.txt,不是input.txt/output.txt;手动添加时必须严格按编号命名
LeetCode 插件登录后题目列表为空?endpoint 和 cookie 是关键
国内用户注册在 leetcode.cn,但插件默认连 leetcode.com,两者账号体系完全隔离。选错 endpoint 表现就是“已登录”但列表空、点开题目报 401 Unauthorized、题目描述全是英文。
必须手动改配置:
- 在 VSCode 设置中搜索
leetcode.endpoint,值设为"leetcode-cn" - 改完重启 VSCode——这个配置不热重载
- Cookie 登录必须同时提供
LEETCODE_SESSION和csrftoken两个字段,缺一个就提示Invalid CSRF token - 旧 token 会缓存,路径是
~/.vscode/extensions/leetcode.vscode-leetcode-*/out/cache,删掉再重登
tasks.json 配置比 Code Runner 更可控,但容易漏掉调试入口
用 tasks.json 可以精确控制编译参数、输入重定向、清理行为,但它本身不启动调试器,也不自动打开终端。很多人配完发现按 Ctrl+Shift+B 能编译,但没法看变量、设断点、查栈帧。
关键点:
- 必须配合
launch.json才能调试;只配tasks.json= 只有构建能力,没有运行/调试能力 -
group字段要设为"build",否则任务不会出现在构建菜单里 - 如果用
g++编译,args里务必加-g,否则launch.json启动 GDB 时看不到源码行号 - Windows 下
command写g++.exe比g++更稳妥,避免 PATH 解析歧义
a.exe 被反复覆盖覆盖。建议明确分工——比如用 CPH 跑批量测试,用 tasks.json + launch.json 做单步调试。











