背景

公司的代码风格是Google,要求设置自动化格式;文龙和李泽分别在linux和windows下设置的,我参考了李泽的win10下的设置,结果踩了个大坑,浪费了整整一天;

过程

李泽提供的设置过程:

1.下载

官网下载vscode https://code.visualstudio.com/

——重点说明:我就是这里踩了大坑,由于公司网络问题,从官网下载总是失败,所以就从其他网站上下了一个不用安装的绿色版;导致后面的格式化设置一直提示找不到clang,哪怕我手动安装了LLVM并把它加入到环境变量,能在win10的cmd下正常执行,但vscode还是一直提示找不到;
重启电脑+卸载并重装插件+重装vscode,也都解决不了这个问题(dog head),一整天的时间都浪费在不同的尝试上;甚至尝试了下载插件后手动安装,也都没有解决这个问题;

2.Vscode插件

Atom one dark thme 界面主题

Batter comments 注释

Bracket pair colorizer 括号高亮色彩

c/c++ 语法提示

Chinese 中文

Cmake cmake语法

Cmake tools cmake扩展包

Path intellisense 路径提醒

Surround 添加标签

TODO highlitht todo高亮

Visual studio intellicode 语法提示

Tabinne autocomplete ai 语法提示(基于过往记录)

Vscode-fileheader 头文件签名

Korofileheader 函数注释

Remote ssh 远程ssh连接

Remote wsl 连接linux

Remote containers

Remote development

vscode python 断点继续执行_linux

3.Vscode和docker连接

服务端-docker容器: yum install -y openssh-server
在此之前,已在docker上安装了
cmake3
yum install -y cmake3
gcc:
sudo yum install centos-release-scl centos-release-scl-rh
sudo yum install -y scl-utils*
sudo yum -y install llvm-toolset-7 devtoolset-8-gcc*
scl enable devtoolset-8 bash 或者 source /opt/rh/devtoolset-8/enable
which gcc
gcc –version

1)修改docker容器的ssh访问
A、vi服务器端的/etc/ssh/sshd_config
B、把PasswordAuthentication设成yes
C、找到#PermitRootLogin no将其修改为PermitRootLogin yes
2)systemctl restart sshd
3)win10下验证是否可以连接到docker

ssh xxx@xxx.xxx.xxx.xxx -p yyyyy
对于我来说,就是 ssh root@127.0.0.1 -p 11001 , 这里的11001是docker上的映射端口号

4. Vscode连接linux容器

双击vscode左侧的 “远程资源管理器”(下图中的步骤1),然后点击“+”(步骤2)创建配置文件,例如:

vscode python 断点继续执行_linux_02


设置config文件:

vscode python 断点继续执行_json_03


并输入文档中的内容:

Host 127.0.0.1
HostName 127.0.0.1
Port 11001
User root
【这里可以配置多个链接的】
之后双击,然后输入密码,即可连接到docker上;
在vscode上通过docker内的路径来寻找并打开相应的项目:以文件夹为单位打开;

.clang-format(编码规范脚本,在项目的根目录下)

可根据自己的需要进行相应的修改,某些修改可能还需要在vscode的设置里进行相应的设置,具体选项的设置,待遇到问题后搜索即可;比如我就因为使用vscode的绿色免安装版,导致格式化设置一起不起作用,哪怕修改了vscode里的很多选项;这些小坑还是需要注意的;

---
Language:        Cpp
BasedOnStyle:  Google
DerivePointerAlignment: false
PointerAlignment: Left
BinPackArguments: false
BinPackParameters: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortFunctionsOnASingleLine: None
ContinuationIndentWidth: 2
ConstructorInitializerIndentWidth: 2
...

断点调试

生成 .vscode 文件夹

直接点击vscode左侧的调试按钮,就会在项目工程的根目录下生成 .vscode 文件夹,下面的文件有: extensions.json launch.json settings.json tasks.json

vscode python 断点继续执行_linux_04

launch.json配置

内容如下,部分内容需要根据项目或者本地设置来进行修改:

{
    "version": "0.2.0",
    "configurations": [
      
      {
        "name": "(gdb) 启动",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/tcp_filter", // 需要修改-调试可执行程序的路径
        "args": [],
        "stopAtEntry": true,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "miDebuggerPath": "/usr/bin/gdb",// 需要修改-gdb的路径
        "setupCommands": [
          {
            "description": "为 gdb 启用整齐打印",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ],
        "preLaunchTask": "make"
      }
    ]
  }

tasks.json配置

内容如下,部分内容需要根据项目或者本地设置来进行修改(eg:command对应的部分):

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "make",
            "type": "shell",
            "command": "make",  //sh build.sh
            "group": { //group表示‘组’,我们可以有很多的task,然后把他们放在一个‘组’里
                "kind": "build", //表示这一组任务类型是构建
                "isDefault": true //表示这个任务是当前这组任务中的默认任务
            },
        }
    ]
}

extensions.json配置

{
    "recommendations": [
        "xaver.clang-format",
        "ms-vscode.cpptools"
    ]
}

注意

在后续的其他项目的调试过程中,发现一个小坑,就是如果想通过vscode来远程调试docker中映射在本地的工程,那么在打开文件建立工程的时候,不能直接在windows下打开文件,而应该在docker的linux目录下输入相应的目录来打开文件建立工程,否则vscode会认为这是一个windows下的工程,那么在搜索gdb的时候,就会在windows目录下寻找,而不是在docker的linux下寻找;

总结

1、一个小坑可能需要折腾一天甚至更久,并且网上没有符合要求的解决方案,比如说我这次遇到的vscode绿色免安装版导致的问题;
2、每一个问题尽量明白原因,然后再去做相应的解决尝试;实在没招了,再去乱拳打死老师傅的尝试;