vscode使用

vscode预定义变量variables-reference

1. C++工程

Using C++ on Linux in VS Code

  1. 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.jsoncompiler build settings[Terminal] > Configure Default Build Task>C/C++: g++ build active fileCtrl+Shift+B进行构建
launch.jsondebugger settings[Run] > Add Configuration...>C++ (GDB/LLDB)>g++ build and debug active file按F5 或[Run] > Start Debugging启动调试
c_cpp_properties.jsoncompiler 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等

  1. 在vscode安装好C++、cmake、ROS插件

  2. 创建ros工作空间ros_ws/src,并在ros_ws下运行catkin_make进行编译

  3. 在ros_ws下运行code .

  4. 在终端使用catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes命令,之后在build下面会生成一个compile_commands.json的文件,它规定了到哪里去编译什么文件;

  5. 在c_cpp_properties.json文件中"configurations"的花括号内添加"compileCommands": "${workspaceFolder}/build/compile_commands.json"

  6. 生成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",
    			
    		}
    	]
    }
    
  7. 至此,环境配置完成

  8. 调试方法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"
    			}
    		}
    	]
    }
    
  9. 调试方法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> 此时,运行的节点程序会停在设置的断点处,可以进行调试了。

  10. 调试方法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

  1. 终端输入git --version确认已安装git
  2. 设置身份标识
    $ git config --global user.email "邮箱"
    $ git config --global user.name "用户名"
    # 如果仅在本仓库设置身份标识,则省略 --global 参数。
    
  3. clone远程存储库到本地
  4. 创建branch
  5. 在branch上进行修改
  6. [源代码管理]->[+](暂存所有更改) -> [✓](提交)
  7. check out -> main
  8. […/分支] -> 合并分支 -> 新加的 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++.
并未解决,而且原因不明

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值