能本地调试且运行自动化测试用例,但需区分插件开发与刷题场景:前者编译TS并运行test suite,后者用g++/python3直接执行并断点调试;testSolution命令仅调用CLI提交至线上判题机,返回JSON结果,不支持断点;本地调试须绕过插件,配置launch.json直连编译器。

能本地调试,也能跑自动化测试用例——但必须分清两个场景:插件本身开发 vs. 用插件刷题。前者要编译 TypeScript、运行 test suite;后者是把 LeetCode 题目代码拉到本地,用 g++ 或 python3 直接执行 + 断点调试。混用会卡在 testSolution 报错或 launch.json 配不起来。
vscode-leetcode 插件的 testSolution 命令只跑测试,不启动调试器
插件里 testSolution 是调用 CLI 工具(如 leetcode-cli)提交代码到线上判题机,不是本地执行。它返回的是 JSON 格式判题结果,比如 {"status":"Accepted","runtime":12,"memory":15.3},没法设断点、看变量值。
- 这个命令本质是 shell 调用:
node leetcode-binary test "path/to/solution.cpp" -t "[[1,2],[3,4]]" - 如果你在
src/leetCodeExecutor.ts里加debugger,只有在插件开发模式(F5 启动 Extension Development Host)下才生效 - 普通刷题时右键“Run Test Case”,走的就是这条链路——它不依赖你本地有没有
gdb,也不读你的tasks.json
本地调试 LeetCode 题目代码:绕过插件,直连编译器
想单步看 vector<int></int> 内存布局、查递归栈帧,就得脱离插件,用 VSCode 原生 C++/Python 调试能力。关键不是装插件,而是配对 launch.json 和真实可执行文件。
- 对 C++:确保
g++在 PATH,且项目根目录有CMakeLists.txt或手动写tasks.json调用g++ -g -o main main.cpp - 对 Python:不用额外配置,直接在
launch.json里设"program": "${file}",但测试用例得硬编码进脚本,比如assert Solution().twoSum([2,7,11,15], 9) == [0,1] - 常见坑:
testString传入的是字符串格式 JSON,而本地调试需要的是原生数据结构,别直接拿插件生成的测试字符串去喂main()
自动化测试用例:靠文件驱动,不是靠插件按钮
插件自带的“Run Test Case”只能逐条手动触发,没法批量回归。真要自动化,得自己组织测试文件结构,再用脚本驱动。
- 推荐目录:
problems/1_two-sum/下放solution.cpp+test_cases.json(每行一个输入输出对) - 写个 Python 脚本读
test_cases.json,调用subprocess.run(["g++", "-g", "solution.cpp", "-o", "a.out"]),再用echo '[2,7,11,15] 9' | ./a.out测 - 注意:LeetCode 的输入格式(如
[[1,2],[3,4]])和本地cin解析逻辑必须一致,否则测试通过但提交失败
最易被忽略的一点:插件的 leetcode.defaultLanguage 只控制新建题目的默认后缀名,不影响实际执行环境。C++ 题目用 Python 调试器照样能跑,只是类型检查和断点位置会错位——别迷信设置项,盯住 launch.json 里的 configurations 和终端里真实执行的命令。


















