VSCODE C/C++配置
常用操作
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调试
-
在CMakeLists.txt中打开
-g
开关,然后在vscode内嵌的终端编译执行文件set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
-
点击”调试”按钮 -> “设置”按钮,配置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}
是代码根位置目录 -
点击”调试”按钮 -> “开始调试”按钮,进行GDB调试跟踪
-
WATCH窗口可以添加观察点,比如某个变量
people.name
,也可以添加某个变量的地址&people.name
,也可以观察某个地址*(int*)0x1888000
-
CALL STACK窗口可以观察调用栈,包括每个线程的调用栈
如何使用GDB远程调试
尤其是主机端调试arm上的应用程序
-
在目标机器上执行如下命令,其中
192.168.1.1
是主机ip地址:gdbserver 192.168.1.1:1234 run_test arg1 arg2 ...
-
在主机上
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 } ] } ] }