-
本地:
- Remote SSH
-
远程SSH:
-
C/C++:GDB的可视化,支持C++的可视化调试
-
Clangd:代码提示、代码补全和代码跳转
-
CMake:cmake语法高亮
-
GitLens:能够看到代码库中每一行代码的提交历史(包括提交时间和提交人)
-
C++ TestMate:能够展示工程中所有的单元测试,一键运行或调试
-
Clang-Format:代码保存时自动格式化
-
- 本地配置好vscode remote SSH环境,就能够通过mac正常看到devbox中的项目。
-
Remote端下载clangd插件。
-
在.vscode下面创建settings.json,将如下内容复制到settings.json中,需要经路径替换成你自己的build目录下的debug目录,一般为
/``home/{your_home}/``bolt/_build/Release/(写绝对路径)。注意:通过该路径需要能够找到build目录中的compile_commands.json文件,因为构建索引需要依赖compile_commands.json文件。 -
ctrl+shift+p 打开命令窗口,输入 Clangd 然后在命令列表里面找到
clangd: Download language server, 点击安装语言服务器; 安装完成后会提示重新加载。 -
重启后,可以试试效果了。在实际使用的时候,有可能出现即使重新编译了,但是代码提示和跳转依旧存在问题,那么可以尝试重启 clangd。具体做法是 ctrl+shift+p ,输入 Clangd 然后找到
clangd: Restart language server,点击后会重新执行索引。 -
下面的配置信息需要写入
/home/{your_home}/bolt/.vscode/settings.json配置文件中(注意修改黄底的路径信息):
{
"files.associations": {
"array": "cpp",
"string_view": "cpp",
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"atomic": "cpp",
"strstream": "cpp",
"bit": "cpp",
"*.tcc": "cpp",
"bitset": "cpp",
"chrono": "cpp",
"codecvt": "cpp",
"compare": "cpp",
"complex": "cpp",
"concepts": "cpp",
"condition_variable": "cpp",
"cstdint": "cpp",
"deque": "cpp",
"list": "cpp",
"map": "cpp",
"set": "cpp",
"unordered_map": "cpp",
"unordered_set": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"ratio": "cpp",
"regex": "cpp",
"string": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"fstream": "cpp",
"future": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"mutex": "cpp",
"new": "cpp",
"ostream": "cpp",
"ranges": "cpp",
"shared_mutex": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"stop_token": "cpp",
"streambuf": "cpp",
"thread": "cpp",
"cfenv": "cpp",
"cinttypes": "cpp",
"typeindex": "cpp",
"typeinfo": "cpp",
"valarray": "cpp",
"variant": "cpp"
},
"C_Cpp.intelliSenseEngine": "disabled",
"C_Cpp.autocomplete": "disabled",
"C_Cpp.errorSquiggles": "disabled",
"clangd.arguments": [
"--background-index",
"--clang-tidy",
"--clang-tidy-checks=performance-*,bugprone-*",
"--all-scopes-completion",
"--completion-style=detailed",
"--header-insertion=iwyu",
"--pch-storage=disk",
"--cross-file-rename",
"--suggest-missing-includes",
"-log=verbose",
"-pretty",
"--compile-commands-dir=/home/{your_home}/Gluten/bolt/_build/Release/"
]
}- 下载C/C++插件到remote端:
- 点击vscode左侧“调试”选项,然后点击右上角的“齿轮”,打开launch.json文件配置调试信息:
- 然后将如下配置信息填入launch.json文件中,如下几个参数需要++自定义++:
-
"name":当前调试配置的名称。一般项目中会涉及到多个可执行文件的调试,因此“configurations”配置列表中可能会有多个配置选项。
-
"program":你打算调试的可执行文件的完整路径,这里如果我需要调试bolt_exec_test这个测试代码,则需要将其完整路径填写在program中。
-
"args":由于gtest执行可执行文件的时候一般利用--gtest_filter将单元测试的范围限定到某一个单元中,因此利用gdb调试的时候可以将参数信息填写到args中。
-
"cwd":填写的你的项目的工作路径。
-
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "GDB",
"type": "cppdbg",
"request": "launch",
"program": "/home/{your_home}/bolt/_build/Debug/bolt/exec/tests/bolt_exec_test",
"args": [
"--gtest_filter=*SpillTest.spillState*",
// GTEST 中的 EXPECT/ASSERT 失败时立刻 break
"--gtest_break_on_failure"
],
"stopAtEntry": false,
"cwd": "/home/{your_home}/bolt",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Attach 之后立刻就能在 throw exception 的时候 break",
"text": "-exec \"catch throw\"",
"ignoreFailures": true
}
]
}
]
}- 填写完如上配置信息之后,就能够将愉快的调试了:
- 下载
C++ TestMate插件到remote端:
- 可以看到vscode左边出现了测试的icon,点进去发现TestMate并没有发现工程中的单元测试,这里需要配置一下TestMate的 discover 路径:
- 打开vscode的设置页面,找到remote的TestMate设置选项,找到
Executables选项,将build改为_build即可,这里可以知道为啥之前TestMate发现不了工程中了ut了,因此bolt中编译产物是放在_build文件夹中的,而不是build。
- 再次来到测试界面,点击右上角刷新按钮,TestMate就能够发现工程中所有的单元测试了:
- 随便打开一个单元测试,找到绿色的icon,就可以++右键++运行或调试单元测试了:
-
devbox上通过
sudo apt install clang-format命令下载clang-format,默认会安装在/usr/bin/clang-format,可以通过which clang-format查看具体的安装路径。 -
vscode上下载clang-format插件,并配置为默认的代码格式化器。在
.vscode/settings.json中添加如下配置:
"editor.formatOnSave": true, # 配置在保存文件时自动格式化
"clang-format.executable": "/usr/bin/clang-format", # 填写clang-format执行文件的安装路径
"files.autoSave": "afterDelay"- 最后在vscode上编写完代码之后,一般会自动触发clang-format,同时还可以右键单击手动触发clang-format:
note:
如果 remote 工作不正常,可以删除 remote 机器上的 .vscode-server/,重新安装 extensions 即可。











