vscode预定义变量variables-reference
1. C++工程
- Create Hello World
mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .
点击[资源管理器]->点击[新建文件]->输入[helloworld.cpp]
输入文件内容:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
文件 | 用途 | 生成方法 | 备注 |
---|---|---|---|
tasks.json | compiler build settings | [Terminal] > Configure Default Build Task >C/C++: g++ build active file | 按Ctrl+Shift+B 进行构建 |
launch.json | debugger settings | [Run] > Add Configuration... >C++ (GDB/LLDB) >g++ build and debug active file | 按F5 或[Run] > Start Debugging 启动调试 |
c_cpp_properties.json | compiler path and IntelliSense settings | [Ctrl+Shift+P] > C/C++: Edit Configurations (UI) | 配置编译器路径、包含路径、C++ 标准等 |
注意:对于C++工程,使用g++编译,如果要指定C++版本,则要在tasks.json的args中添加"-std=c++17", ,并在c_cpp_properties.json中指定C++版本 |
2. 技巧
- 在设置->用户中搜索"settings",找到
在settings.json中编辑
,在其中添加以下:"workbench.colorCustomizations": { "editor.selectionBackground": "#aa0000"//修改选择文字的颜色 "tab.activeBackground": "#5f80629a"//设置活动tab窗口颜色 }
多光标编辑
- 框选:按shift+alt
- 添加光标:shift+Alt+上方向/下方向,或Alt+点击
- 为界面所有相同字符串创建光标:选中一个字符串,按下ctrl+shift+L,可用于替换。
智能感知
ctrl+空格
行操作
- 复制整行:光标落在某一行,未选中任何字符时,按ctrl+c
- 移动整行:光标落在某一行,未选中任何字符时,Alt+上/下方向
- 删除整行:光标落在某一行,未选中任何字符时,ctrl+shift+K
符号重构
光标落在符号(变量名、函数名等)(不必选中),按下F2或右键选择“重命名符号(rename symbol)
代码格式化
ctrl+shift+I或ctrl+K, ctrl+F或右键选择格式化
代码折叠
展开:ctrl+shift+[ 折叠:ctrl+shift+]
错误
错误会以波浪线标识,按F8显示信息
snippets(片段)
用于语句模板,如try-catch, while(), for等
打出try
,光标选择建议列表中的语句块 trycatch
(以一个方块标识),按下tab,自动打出try-catch语句块
终端
ctrl+`
并行编辑
ctrl+\将一个窗中并列打开多个,提高屏幕利用率
文本差异对比
1> 选中文件A,右键选择以进行比较
,选中文件B,右键与已选项目进行比较
;
2> 选中文件AB,右键将已选项进行比较
3. vscode与ros
ros项目调试:vscode下配置开发ROS项目
ROS——vscode配置
使用Vscode开发ROS
VS Code创建、调试ROS项目
VS Code 调试ROS节点
VScode debug ROS cpp程序设置 断点调试
VSCode Ubuntu下调试失败 无法打开 libc-start.c raise.c等
-
在vscode安装好C++、cmake、ROS插件
-
创建ros工作空间ros_ws/src,并在ros_ws下运行catkin_make进行编译
-
在ros_ws下运行
code .
-
在终端使用
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes
命令,之后在build下面会生成一个compile_commands.json的文件,它规定了到哪里去编译什么文件; -
在c_cpp_properties.json文件中"configurations"的花括号内添加
"compileCommands": "${workspaceFolder}/build/compile_commands.json"
-
生成tasks.json文件:Terminal->Configure default build task,(或ctrl+shift+p)选择catkin_make: build
{ "version": "2.0.0", "tasks": [ { "label": "catkin_make: debug", "type": "catkin_make", "args": [ "--directory", "/home/xtcl/ros_ws/xtcl_ws", "-DCMAKE_BUILD_TYPE=Debug" ], "problemMatcher": [ "$catkin-gcc" ], "group": { "kind": "build", "isDefault": true } }, { "label": "catkin_make: clean", "type": "catkin_make", "args": [ "--directory", "/home/xtcl/ros_ws/xtcl_ws", "clean" ], "problemMatcher": [ "$catkin-gcc" ], "group": "build" }, { "label": "catkin_make: release", "type": "catkin_make", "args": [ "--directory", "/home/xtcl/ros_ws/xtcl_ws", "-DCMAKE_BUILD_TYPE=Release" ], "problemMatcher": [ "$catkin-gcc" ], "group": "build", } ] }
-
至此,环境配置完成
-
调试方法1(将ROS节点当做C++文件来调试)
{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) ov2slam", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/devel/lib/ov2slam/ov2slam_node", "args": [ "/home/xtcl/ros_ws/xtcl_ws/src/ov2slam/parameters_files/accurate/euroc/euroc_mono.yaml" ], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], //解决「无法打开“malloc.c”: 无法读取文件'/build/glibc-S9d2JN/glibc-2.27/malloc/malloc.c' (Error: 无法解析不存在的文件"/build/glibc-S9d2JN/glibc-2.27/malloc/malloc.c")。」问题 "sourceFileMap": { "/build/glibc-S9d2JN": "/usr/src/glibc" } } ] }
-
调试方法2(ROS:Attach调试)
(1)在launch.json中,Add Configuration…,选择,ROS:Attach。现在launch.json变成这样了:{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "ROS: Attach", "type": "ros", "request": "attach" }, { "name": "(gdb) ov2slam", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/devel/lib/ov2slam/ov2slam_node", "args": [ "/home/xtcl/ros_ws/xtcl_ws/src/ov2slam/parameters_files/accurate/euroc/euroc_mono.yaml" ], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], //解决「无法打开“malloc.c”: 无法读取文件'/build/glibc-S9d2JN/glibc-2.27/malloc/malloc.c' (Error: 无法解析不存在的文件"/build/glibc-S9d2JN/glibc-2.27/malloc/malloc.c")。」问题 "sourceFileMap": { "/build/glibc-S9d2JN": "/usr/src/glibc" } } ] }
(2)这种ROS:Attach调试,需要先运行ros节点,然后attach到启动的节点,具体步骤如下:
1> Shift+Ctrl+P->ROS:Run a ROS executable->选功能包->选节点->回车
2> 在Debug面板中,选择Run:Attach,点击绿三角运行,选C++,选启动的节点程序
3> 出现提示:
Superuser access is required to attach to a process.
Attaching as superuser can potentially harm your computer.
Do you want to continue? [y/N]
输入y,回车。提示输入密码,输入密码,回车。
4> 此时,运行的节点程序会停在设置的断点处,可以进行调试了。 -
调试方法3(用ROS:Launch调试)
launch.json应该如下所示:{ // 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": "ROS: Launch", "request": "launch", "target": "/home/mumu1408/code/test_ws/src/test/launch/test.launch", "type": "ros" } ] }
在Debug面板中,选择Run:Launch,点击绿三角运行
4. vscode与git
- 终端输入
git --version
确认已安装git - 设置身份标识
$ git config --global user.email "邮箱" $ git config --global user.name "用户名" # 如果仅在本仓库设置身份标识,则省略 --global 参数。
- clone远程存储库到本地
- 创建branch
- 在branch上进行修改
- [源代码管理]->[+](暂存所有更改) -> [✓](提交)
- check out -> main
- […/分支] -> 合并分支 -> 新加的 branch
5. vscode与docker
Developing inside a Container
Working with containers
6. Error
1. 无法打开“libc-start.c”: 无法读取文件'/build/glibc-S9d2JN/glibc-2.27/csu/libc-start.c' (Error: 无法解析不存在的文件"/build/glibc-S9d2JN/glibc-2.27/csu/libc-start.c")。
2. 无法打开“exit.c”: 无法读取文件'/build/glibc-S9d2JN/glibc-2.27/stdlib/exit.c' (Error: 无法解析不存在的文件"/build/glibc-S9d2JN/glibc-2.27/stdlib/exit.c")。
3. 无法打开“cxa_thread_atexit_impl.c”: 无法读取文件'/build/glibc-S9d2JN/glibc-2.27/stdlib/cxa_thread_atexit_impl.c' (Error: 无法解析不存在的文件"/build/glibc-S9d2JN/glibc-2.27/stdlib/cxa_thread_atexit_impl.c")。
4. 无法打开“clock.c”: 无法读取文件'/build/glibc-S9d2JN/glibc-2.27/sysdeps/unix/sysv/linux/clock.c' (Error: 无法解析不存在的文件"/build/glibc-S9d2JN/glibc-2.27/sysdeps/unix/sysv/linux/clock.c")。
5. 无法打开“clock_gettime.c”: 无法读取文件'/build/glibc-S9d2JN/glibc-2.27/sysdeps/unix/clock_gettime.c' (Error: 无法解析不存在的文件"/build/glibc-S9d2JN/glibc-2.27/sysdeps/unix/clock_gettime.c")。
网上的方法:VSCode Ubuntu下调试失败 无法打开 libc-start.c raise.c等,
VSCode添加GLibc源码调试支持,
在ubuntu系统上使用vscode 调试c++.
并未解决,而且原因不明