VSCODE C/C++配置

4 分钟阅读

常用操作

F1: 选择和执行命令

CTRL+SHIFT+I: 格式化排版代码

CTRL+P: 搜索文件名

CTRL+S: 保存修改

CTRL+鼠标左键: 跳转到定义处

CTRL+ALT+减号: 返回上一处

文件单击:预览,注意标签名是斜体字;预览会覆盖上一次预览

文件双击:打开,注意标签名是正体字;会从新标签打开

常用配置

.vscode/settings.json中修改

{
  "files.trimTrailingWhitespace": true # 保存自动去掉行尾空格
  "files.autoSave": "afterDelay"  # 自动保存文件
  "editor.tabSize": 2             # 默认tab用2个空格替代
  "files.insertFinalNewline": true # 末尾加空行
  "python.formatting.provider": "yapf", # 采用yapf格式化python
  "python.formatting.yapfArgs": ["--style={column_limit=128}"] # 每行128限制
  "C_Cpp.formatting": "clangFormat"  # c/c++格式化
}

常用插件

C/C++ IntelliSense (Microsoft)

必用插件

打开代码工程后,如果提示”cannot open source file XXXXX”(无法打开头文件),点击对应#include语句,点击灯泡,选择Add to “includePath”。如果是系统库,可以添加/usr/include,如下:

"includePath": [
    "${workspaceFolder}/include",  #尽量不要用${worksapceFolder}/**
    "/usr/include",
    "/usr/local/include"
]

cpplint

用于lint检查。

  • 屏蔽部分lint告警: 在.vscode -> settings.json -> WORKSPACE SETTING中修改cpplint.filters如下:

    "cpplint.filters": [
        "-legal/copyright" #屏蔽[legal/copyright]告警
    ]
    

GitLens

查看git日志记录,包括对比文件修改。非常强大。

Bracket Pair Colorizer

对括号关联和配色,美观。

CMake

用于CMakeLists.txt文件的语法高亮

如何用GDB调试

  1. 在CMakeLists.txt中打开-g开关,然后在vscode内嵌的终端编译执行文件

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
    
  2. 点击”调试”按钮 -> “设置”按钮,配置lauch.json文件:

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "(gdb) Launch",                          //1. 改个名称,(非必须)
          "type": "cppdbg",
          "request": "launch",
          "program": "${workspaceFolder}/build/run_test", //2. 配置执行文件的路径
          "args": ["arg1","arg2","100","100"],            //3. 改执行参数,可用\导特殊字符
          "stopAtEntry": true,                            //4. 配置入口位置暂停,(非必须)
          "cwd": "${workspaceFolder}/build",              //5. 配置执行路径 (非常重要)
          "environment": [
            {
              "Name":"LD_LIBRARY_PATH",                   //6. 配置链接库路径 (非必须,看需要)
              "Value":"/home/test/lib"
            }
          ],
          "externalConsole": true,                       //7. 是否用外部终端
          "MIMode": "gdb",
          "setupCommands": [
             {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
             }
          ]
        }
      ]
    }
    

    其中${workspaceFolder}是代码根位置目录

  3. 点击”调试”按钮 -> “开始调试”按钮,进行GDB调试跟踪

  4. WATCH窗口可以添加观察点,比如某个变量people.name,也可以添加某个变量的地址&people.name,也可以观察某个地址*(int*)0x1888000

  5. CALL STACK窗口可以观察调用栈,包括每个线程的调用栈

如何使用GDB远程调试

尤其是主机端调试arm上的应用程序

  1. 在目标机器上执行如下命令,其中192.168.1.1是主机ip地址:

    gdbserver 192.168.1.1:1234 run_test arg1 arg2 ...
    
  2. 在主机上launch.json配置如下:

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "run_test_arm",
          "type": "cppdbg",
          "request": "launch",
          "miDebuggerPath": "/home/linaro-gcc/bin/aarch64-linux-gnu-gdb",// 配置gdb路径
          "miDebuggerServerAddress": "192.168.1.2:1234",                 // 指定目标机器地址
          "program": "${workspaceFolder}/build/run_test",          // 配置执行文件的路径
          "args": [],
          "stopAtEntry": true,
          "cwd": "${workspaceFolder}/build",
          "environment": [
            {
              "Name":"LD_LIBRARY_PATH",
              "Value":"/home/test/lib"
            }
          ],
          "externalConsole": true,
          "MIMode": "gdb",
          "setupCommands": [
             {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
             }
          ]
        }
      ]
    }