Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>LeetCode C++ 调试助手New to Visual Studio Code? Get it now.
LeetCode C++ 调试助手

LeetCode C++ 调试助手

LyallLiu

|
2 installs
| (0) | Free
(非官方)关联 LeetCode(力扣)账号:浏览/搜索题目、查看题面、本地运行与断点调试 C++、自定义测试用例、远程测试与提交。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

LeetCode C++ 调试助手

在 VS Code 里刷 LeetCode(力扣):关联账号、浏览 / 搜索题目、查看题面,并且可以在本地对 C++ 题解打断点调试,自定义测试用例,再一键远程测试与提交。

本插件为非官方的第三方工具,与 LeetCode / 力扣 没有隶属关系。账号 Cookie 只保存在本机 VS Code 的 SecretStorage 中,只会发送给你所选的 LeetCode 站点。

功能

功能 说明
账号关联 支持 leetcode.cn 与 leetcode.com,粘贴浏览器 Cookie 登录,Cookie 保存在 VS Code SecretStorage
题目列表 侧边栏按 每日一题 / 全部 / 难度 / 已通过 / 尝试过 / 标签 分组,显示通过状态与通过率
搜索 LeetCode: 搜索题目,按题号、中文或英文标题即时过滤
题面 Webview 展示题目描述、标签、提示,跟随编辑器主题
生成题解 自动生成 题号.slug.cpp,含官方 C++ 模板和示例测试用例
本地运行 自动生成 main(),解析 LeetCode 输入格式,逐组输出结果与耗时
本地调试 一键编译(-g -O0)并启动调试器,断点直接打在题解文件里
自定义用例 题解文件末尾的用例块就是测试集,本地运行、调试、远程测试共用
远程测试 / 提交 调用 LeetCode 判题,展示每组用例的输出 / 预期 / 标准输出,提交结果含用时与内存排名
失败用例回填 提交未通过时,一键把失败用例加入本地用例块,马上本地调试

本地运行器支持的参数 / 返回值类型:int、long long、double、bool、char、string、任意嵌套的 vector<...>、ListNode*、TreeNode*,以及 LRUCache 这类设计题(多方法调用)。随机抽取的 54 道真实题目全部能直接生成并编译调试入口。

环境准备

  1. C++ 编译器(需兼容 GCC 风格参数):
    • Windows:推荐 MSYS2 安装 mingw-w64-ucrt-x86_64-gcc 与 mingw-w64-ucrt-x86_64-gdb,并把 C:\msys64\ucrt64\bin 加到 PATH;或使用 WinLibs
    • macOS:xcode-select --install(clang++ / lldb)
    • Linux:sudo apt install g++ gdb
  2. 调试器扩展(二选一):
    • C/C++(ms-vscode.cpptools,配合 gdb / lldb)
    • CodeLLDB(vadimcn.vscode-lldb,VSCodium / Cursor 用户可选)

指定编译器(CXX)

编译器按以下优先级确定:

  1. 设置项 leetcodeCpp.cxx,例如 g++、clang++、C:/msys64/ucrt64/bin/g++.exe
  2. 环境变量 CXX(可以带参数,例如 ccache g++、zig c++)
  3. 平台默认:macOS 为 clang++,其余为 g++

编译参数由 leetcodeCpp.cxxFlags 控制,默认 ["-std=c++20", "-g", "-O0", "-Wall"]。编译器较老时可改为 -std=c++17。

调试器 leetcodeCpp.debugger 默认 auto:编译器是 clang 且装了 CodeLLDB 时用 CodeLLDB,否则用 C/C++ 扩展;使用 C/C++ 扩展时会优先在编译器同目录查找 gdb,也可以用 leetcodeCpp.debuggerPath 手动指定。

登录

  1. 点击状态栏左下角「LeetCode 未登录」或侧边栏的登录按钮
  2. 点输入框右上角的 🌐 按钮在浏览器里打开登录页并登录
  3. 按 F12 → Network,刷新页面,任选一个发往 leetcode 的请求,复制请求头里的完整 Cookie
  4. 粘贴到输入框回车(需包含 LEETCODE_SESSION 和 csrftoken;也支持 Cookie-Editor 导出的 JSON)

切换站点:LeetCode: 切换站点,或修改设置 leetcodeCpp.endpoint。

使用

  1. 侧边栏打开 LeetCode C++ → 点击题目查看题面 → 点「用 C++ 编写 / 调试」

  2. 生成的题解文件:

    // 1. 两数之和
    // https://leetcode.cn/problems/two-sum/
    #include ".lccpp/leetcode.h"
    
    class Solution {
    public:
        vector<int> twoSum(vector<int>& nums, int target) {
    
        }
    };
    
    /* @testcase
    [2,7,11,15]
    9
    
    [3,2,4]
    6
    */
    

    前两行用来识别题目,请保留。和 LeetCode 网站一样,vector、algorithm 等标准库不需要再单独 include,.lccpp/leetcode.h 已经全部引入并写好了 using namespace std;。提交时会自动去掉 #include 这一行和末尾的测试用例块,其余代码原样提交。

  3. 测试用例块上方的一排按钮:本地运行(Ctrl+Alt+R)、调试(Ctrl+Alt+D)、远程测试、提交、题目描述、重置为示例用例

  4. 打断点后点「调试」,调试器会在题解文件中停下;程序输出在终端 / 调试控制台中

题解保存目录

  • 第一次新建题解时会询问保存位置,默认是工作区下的 leetcode 文件夹

  • 之后可用命令「LeetCode: 设置题解保存目录」(侧边栏 ⋯ 菜单里也有)修改,或直接改设置 leetcodeCpp.workspaceFolder,支持 ${workspaceFolder}/algo 这样的写法

  • 本地调试用到的头文件和编译产物统一放在题解目录下的 .lccpp 文件夹里,不会散落到其他地方:

    leetcode/
    ├── 1.two-sum.cpp
    ├── 3644.maximum-k-to-sort-a-permutation.cpp
    └── .lccpp/
        ├── leetcode.h      # 标准库 + ListNode / TreeNode
        └── build/          # 自动生成的 main()、用例输入和可执行文件
    
  • 旧版本(0.1.1 及以前)会在每个题解所在目录都建一个 .lccpp,题解目录以外的那些可以直接删除

自定义测试用例

文件末尾的 /* @testcase ... */ 就是测试集,本地运行、调试、远程测试都用它:

  • 普通题:每个参数一行,与网页「测试用例」面板的格式相同;多组用例依次排列,空行只是为了好看
  • 设计题:每组两行,第一行操作名数组,第二行参数数组
  • # 开头的行会被忽略,可以用来临时注释掉某组用例
  • 用例块上方的 重置为示例用例 可以恢复题目自带的示例

调试时的参数从哪来

插件会生成一个 main():依次读取用例块中的每组用例,把每行解析成对应参数,新建一个 Solution 调用你的函数,再打印结果。所以:

  • 断点停在你的函数里时,参数(如 nums)就是当前这组用例的数据,在「变量」面板里可以展开查看
  • 每组用例开始前会打印 Case N 和 Input : ...,可以对照当前是第几组
  • 用例按顺序执行,按 F5 继续就会进入下一组;只想调某一组时,用 # 把其他组注释掉

本地调试辅助

题解文件引入的 .lccpp/leetcode.h 提供了标准库、using namespace std;、ListNode / TreeNode 定义,以及一些只在本地可用的工具(需要用 LC_LOCAL 宏包起来,避免提交后编译失败):

#ifdef LC_LOCAL
lc::print(nums, root);                      // 按 LeetCode 格式打印任意支持的类型
TreeNode* t = lc::makeTree("[1,null,2,3]"); // 从字符串构造树 / 链表
#endif

已知限制

  • 自带 Node 类型的题(N 叉树、带随机指针的链表、图的克隆等)和交互题(如 isBadVersion)暂不支持本地运行,但仍可远程测试和提交
  • 不支持 MSVC(cl.exe)命令行参数;Windows 上请使用 MinGW-w64 的 g++ / clang++
  • 网络请求不走 VS Code 的代理设置;访问 leetcode.com 需要代理时,请在启动 VS Code 前设置系统代理环境
  • 题面中的「提示」是 LeetCode 接口返回的原文,力扣中国站的提示目前也只有英文

开发

npm install
npm run compile
npm run package                 # 生成 .vsix
npm run test:format             # 题解文件格式(生成 / 识别 / 提交内容)
CXX=g++ npm run test:cpp        # 用真实编译器验证本地运行器
CXX=g++ npm run test:smoke      # 拉取真实题目,验证生成的调试入口(需要网络)
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft