VSCode C++跳转和调试方法总结

1. 跳转

1.1. GNU Global 标签式跳转

场景:

用 GNU Global,基于标签式的跳转。

插件:

  1. "C/C++ GNU Global" 插件;
  2. 本地机器上的 GNU Global 软件。

优缺点:

  1. 基于标签式跳转,相当于纯文本模式,最好只用于纯阅读代码场景。至于这种标签式跳转在纯阅读代码场景下效果到底怎么样,还需要体验完善。
  2. 没有智能感知,不能提供很好的智能补全效果,修改了代码后需要重新建立标签索引。

方法:

VSCode中通过GNU Global实现C++函数跳转和代码自动补全

1.2. C/C++ 插件 IntelliSense 式跳转

场景:

基于 "C/C++" 插件使用 IntelliSense 模式跳转。

插件:

  1. "C/C++" 插件。

优缺点:

  1. 不依赖 makefile,CMakeLists,compile_command.json 文件,不挑剔代码,基于智能感知,能提供差不多的跳转体验与智能补全体验,代码环境复杂时一般用这种模式。
  2. 对于重载等跳转支持不是很友好,它很多情况下不知道调用的哪个重载,有些符号也跳转不了,要结合搜索功能一起使用。
  3. "C/C++" 插件也可指定 compile_command.json 模式,但并没有 "clangd" 插件工作的好,在 .vscode/c_cpp_properties.json 填下如下类似内容:
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c17",
            "cppStandard": "c++14",
            "intelliSenseMode": "linux-clang-x64",
            "compileCommands": "${workspaceFolder}/compile_commands.json"
        }
    ],
    "version": 4
}

其中 compileCommands 字段指定 compile_commands.json 的位置。

方法:

安装 "C/C++" 插件后,简单配置后就能跳转了。

1.3. C/C++ 插件标签式跳转

暂时未研究,待补充完善。

1.4. clangd 插件跳转

场景:

基于 "clangd" 插件跳转。

插件:

  1. "clangd" 插件。
  2. 本地机器上的 clangd 软件。

优缺点:

  1. 依赖 compile_command.json 文件,但体验最佳。

方法:

VSCode + WSL + clangd +CMake + CMake Tools搭建C++开发环境

2. 运行与调试

2.1. C/C++ 插件运行与调试

场景:

编写单文件或者很少文件的代码。

插件:

  1. "C/C++" 插件。

优缺点:

  1. 仅限于编写单文件或者很少文件的代码。

方法:

  1. 安装 gcc 等编译工具。
  2. 点击 VSCode 菜单栏 "运行" > "启动调试/以非调试模式运行" 后 "C/C++" 插件会生成 task.json 与 lanch.json 即可运行与调试。

2.2. "C/C++" + CMake + CMake Tools 插件调试

场景:

编写大型项目,使用 cmake 构建时使用。

插件:

  1. "C/C++" 插件;
  2. "CMake" 插件;
  3. "CMake Tools" 插件。

优缺点:

  1. "C/C++" 的智能感知没有 "clangd" 好,但 "clangd" 依赖 compile_commands.json,有很大型项目没有条件生成 compile_commands.json

方法:

  1. 禁用 "clangd" 插件。

  2. 安装 gcc 等编译工具。

  3. 用 "CMake: Build" 指令编译。

  4. 打断点,然后用 "CMake: Debug" 指令启动调试,用 "CMake: Run Without Debugging" 指令以非调试模式运行。若程序需要启动参数,则在用户级 setting.json 中添加如下内容:

    "cmake.debugConfig": {
    "args": ["arg1", "arg2"],
    }
    
  5. 也可以在 VSCode 菜单栏依次点击 "运行" > "启动调试/以非调试模式运行",根据提示自动生成 task.json,然后就能运行与调试了。如需要运行参数,则在 task.json 对应位置添加运行参数即可。

2.3. clangd + CMake + CMake Tools 插件调试

场景:

编写大型项目,使用 cmake 构建时使用。

插件:

  1. "clangd" 插件;
  2. "CodeLLDB" 插件;
  3. "CMake" 插件;
  4. "CMake Tools" 插件。

优缺点:

  1. "clangd" 插件的智能感知比较不错,编写代码时体验比较好。但 "clangd" 依赖 compile_commands.json,有很大型项目没有条件生成 compile_commands.json

方法:

  1. 禁用 "C/C++" 插件。
  2. 安装 gcc 等编译工具。
  3. 用 "CMake: Build" 指令编译。
  4. 打断点,在 VSCode 菜单栏依次点击 "运行" > "启动调试/以非调试模式运行 "启动运行与调试。首次会提示错误,点击确定后会自动帮你创建 launch.json 文件(前提是正确安装了"CodeLLDB" 插件),等 launch.json 文件创建完毕后,再次启动就能运行与调试代码了。

若没有自动创建 launch.json 文件,则自己手动创建,并放于工程的 .vscode 目录下。

launch.json 文件内容:

{
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug",
            "program": "${workspaceFolder}/<executable file>",
            "args": [],
            "cwd": "${workspaceFolder}"
        }
    ]
}

参数说明:

  • program:指定 "CMake: Build" 生成的二进制的路径,一般在 Build 目录下;
  • args:程序启动参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值