跳转
GNU Global标签式跳转
场景:
用GNU Global,基于标签式的跳转。
插件:
- "C/C++ GNU Global"插件;
- 本地机器上的GNU Global软件。
优缺点:
- 基于标签式跳转,相当于纯文本模式,最好只用于纯阅读代码场景。至于这种标签式跳转在纯阅读代码场景下效果到底怎么样,还需要体验完善。
- 没有智能感知,不能提供很好的智能补全效果,修改了代码后需要重新建立标签索引。
方法:
VSCode中通过GNU Global实现C++函数跳转和代码自动补全
"C/C++"插件IntelliSense式跳转
场景:
基于"C/C++"插件使用IntelliSense模式跳转。
插件:
- "C/C++"插件。
优缺点:
- 不依赖makefile,CMakeLists,compile_command.json文件,不挑剔代码,基于智能感知,能提供差不多的跳转体验与智能补全体验,代码环境复杂时一般用这种模式。
- 对于重载等跳转支持不是很友好,它很多情况下不知道调用的哪个重载,有些符号也跳转不了,要结合搜索功能一起使用。
"C/C++"插件标签式跳转
"clangd"插件跳转
场景:
基于"clangd"插件跳转。
插件:
- "clangd"插件。
- 本地机器上的clangd软件。
优缺点:
- 依赖compile_command.json文件,自己写小工程代码体验良好。但阅读有些大型项目,就算有compile_command.json有时候也是无法识别符号,还可能导致clangd服务崩溃。
方法:
VSCode + WSL + clangd搭建C++开发环境
运行与调试
"C/C++"插件运行与调试
场景:
编写单文件或者很少文件的代码。
插件:
- "C/C++"插件。
优缺点:
- 仅限于编写单文件或者很少文件的代码。
方法:
"C/C++"+"CMake"+"CMake Tools"插件调试
场景:
编写大型项目,使用cmake构建时使用。
插件:
- "C/C++"插件;
- "CMake"插件;
- "CMake Tools"插件。
优缺点:
- "C/C++"的智能感知没有"clangd"好,但"clangd"依赖
compile_commands.json
,有很大型项目没有条件生成compile_commands.json
。
方法:
- 禁用"clangd"插件。
- 安装gcc等编译工具。
- 用"CMake: Build"指令编译。
- 打断点,然后用"CMake: Debug"指令启动调试,用"CMake: Run Without Debugging"指令以非调试模式运行。若程序需要启动参数,则在用户级
setting.json
中添加如下内容:
"cmake.debugConfig": {
"args": ["arg1", "arg2"],
}
- 也可以在VSCode菜单栏依次点击"运行" > "启动调试/以非调试模式运行",根据提示自动生成
task.json
,然后就能运行与调试了。如需要运行参数,则在task.json
对应位置添加运行参数即可。
"clangd"+"CMake"+"CMake Tools"插件调试
场景:
编写大型项目,使用cmake构建时使用。
插件:
- "clangd"插件;
- "CodeLLDB"插件;
- "CMake"插件;
- "CMake Tools"插件。
优缺点:
- "clangd"插件的智能感知比较不错,编写代码时体验比较好。但"clangd"依赖
compile_commands.json
,有很大型项目没有条件生成compile_commands.json
。
方法:
- 禁用"C/C++"插件。
- 安装gcc等编译工具。
- 用"CMake: Build"指令编译。
- 打断点,在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:程序启动参数。