vscode 远程开发c/c++
简介
c/c++或嵌入式开发,往往需要在linux环境下开发。在windows下,除了用vmware/vbox安装linux虚拟机外,还可以安装wsl1/wsl2。wsl全名windows的linux子系统,其中wsl1只是改写了api,在windows内核上套了一层linux shell,因此很多内核相关的开发做不了。而wsl2则完全支持linux内核,但较为臃肿。孰优孰劣,还是根据需求来,应用开发,不涉及内核相关的,尽管用wsl1。
VS Code是微软出品的一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、Git等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。
本文将介绍vs code + wsl1环境对c/c++的开发调试(已装好wsl)。
远程连接
- 安装remote - wsl插件
![](https://img-blog.csdnimg.cn/img_convert/ed7709572ae904f2ca69b9e5dc56801b.png)
- 点击左下角><符合,连接wsl
![](https://img-blog.csdnimg.cn/img_convert/daae5077696ee2846ec7377ea1dc4542.png)
- 连接之后,就可以打开wsl下的目录进行远程编码,丝滑流畅
![](https://img-blog.csdnimg.cn/img_convert/4d51e953a9729e700e3bacef1a4c0a47.png)
编译调试
配置如何构建,和如何执行程序
![](https://img-blog.csdnimg.cn/img_convert/ca9e2ea4a7fcce46766aa76c685741be.png) ![](https://img-blog.csdnimg.cn/img_convert/2d5f7c8c110722b57185e00f5515e7db.png)
![](https://img-blog.csdnimg.cn/img_convert/1c069d264d21c41f526d3973b901f330.png)
在文件根目录下的.vscode文件中,产生launch.json和tasks.json两个配置文件。其中,tasks.json用于配置构建过程,launch.json用于执行程序的相关配置。
写个简单的单文件或几个文件的程序,直接简单修改tasks.jon还挺方便的。若是硕大的项目工程,往往都是由makefile或cmake等方式构建,不如直接切换到terminal,直接执行个make,更方便且符合习惯。
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc build active file",
"command": "/usr/bin/gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
直接make之后,生成目标文件。
本例生成的可执行文件同main函数所在文件名相同,可切换到可执行文件的同名c的文件,按F5键或点击start debuging,启动调试。
{
"version": "0.2.0",
"configurations": [
{
"name": "gcc - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": true,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
![](https://img-blog.csdnimg.cn/img_convert/a113f44247b876c2b6eb1d0654102b77.png)
条件断点
vs code 支持条件断点,通过设置一个表达式/或计算hit断点的次数,当程序运行到满足条件下,才会break。调试重复执行的代码特有用。
方法是,右击一个断点,编辑断点,输入表达式或计数,回车生效,断点也随之变为黄点。
![](https://img-blog.csdnimg.cn/img_convert/77dbb2de86530299fb51817fad112a8d.png) ![](https://img-blog.csdnimg.cn/img_convert/adfee4a1e617ed55328b05a213b94e71.png)
最后
如果,你的代码在ssh连接的服务器上,用remote-ssh插件,一样可以进行上述调试过程。以前,用vim+ctags+各种vim插件开发,虽然挺能装逼的,但效率差的太远。
其他,资源管理器中输入\wsl$,可以打开linux的文件目录。
参考:
Using C++ and WSL in VS Code
Debug C++ in Visual Studio Code
|