VScode官方下载网站:https://code.visualstudio.com/download
注:下载什么版本的安装包,要根据自己的Linux系统的版本来选择。
下载64位.deb的安装包:code_1.78.2-1683731010_amd64.deb
因为我的Linux是Ubuntu版本,因此下载的是.deb结尾的安装包
Windows与Linux系统实现文件互传的方法,见下面链接,用过的都说好【edog】
Windows与Linux系统实现文件互传(通俗易懂)https://blog.csdn.net/qq_42595610/article/details/130819486?spm=1001.2014.3001.5501
这里,我将安装包放在了/home/ubuntu/Downloads目录下(自定义即可)
Linux终端输入:sudo dpkg -i code_1.78.2-1683731010_amd64.deb
显示以上结果说明安装成功
Linux系统上完成VScode的安装之后,使用命令行的方式查看其安装路径:
Linux命令行输入:whereis code
回车之后显示:/usr/bin/code /usr/share/code
,此路径便为VScode的安装路径
在Linux终端输入:code
回车即可打开VScode
刚完成安装的VScode只是一个框框而已,里面没有任何拓展的插件,不支持代码提示、语法高亮、代码运行等功能
Linux上对于VScode的配置与Windows有很多相似之处,可以参考Windows下的安装与配置进行相应的操作,也可以先不看,后面的步骤中提到时,俺再提醒你一遍,损噻~Windows下VScode安装与配置
进入VScode插件官网
VScode插件官网:https://marketplace.visualstudio.com/search?target=VSCode&category=All%20categories&sortBy=Installs
选择想要的插件以后,点击Version History
选择相应的版本进行下载
将所需要安装的插件全部下载到电脑上,并且放在随便在什么地方建个包放在一起,毕竟物以类聚嘛~
下图是自己的从插官网下载的一些VScode插件,为了在Linux上配置VScode运行C语言的环境
插件下载好了之后上传到Linux系统上的某目录下,这里以/home/ubuntu/Downloads
目录为例。
上传至Linux之后进行解压
加压完成之后,按照小白专用VScode从安装到入门编写_Windows_C/C++中的离线插件安装方式,选择Install from VSIX
进行离线插件安装
进入之后打开存放插件的目录,选中所有的插件并且选择install
安装成功
注 :上图没有安装CMake、CMakeTools,这两款插件在C/C++调试时会用到,按照上面步骤安装即可
到此VScode及其插件的安装就告一段落,现在我们创建一个新的C/C++工程,并且用VScode打开
在Linux下的目录中自定义一个可以存放工程的文件夹,例如:/home/ubuntu/Documents
下面创建一个code_list
目录,终端命令行进入该目录下,并且输入:code ./
,就可以用VScode打开该目录
在该工程中,写一个打印hello world的程序来对安装的正确性进行测试:
打开右下角设置,输入code runner run in terminal
,将Run In Terminal
打勾即可
经过以上battle,总算可以运行代码了。现在还有最重要的一环,就是通过配置json文件来达到可以调试代码的目的。
我们点击工具栏【运行】-【启动调试】之后点击g++生成和调试活动文件,会自动生成launch.json
与tasks.json
文件。
注意:launch.json
与tasks.json
文件会被自动放在一个名为.vscode
的文件中,一起存在于工程中
首先来看launch.json
文件,该文件是专门用来运行和调试的配置文件。上面为我们生成的配置文件里面缺少很多配置,我们可以向里面添加配置,但也无需全部人工填写,往其中添加配置模板的方式有几种如下:
launch.json
文件,右下角就有名为add configuration
的button进行提示,直接点击此按钮,就会自动添加配置进launch.json
文件中。ctrl+shift+p
打开搜索窗口,直接输入add configuration
也可launch.json
文件中的configurations
标签下的[]
中输入gdb
回车即可生成配置模板不过直接生成的配置模板需要我们手动配置的地方太多,直接粘贴一段别人写好的配置拿过来解读一下岂不是更好,何乐而不为呢,是不是爱卿?
下面我们来分析一下launch.json文件:
注:launch.json文件的配置没有太多需要改动的地方,只需要关注以下两个地方即可
“program”:…
“preLaunchTask”:…
Linux下C/C++对与launch.json的配置与Windows下存在较大的差异,自己注意一下,俺就不分析了哈哈哈
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
“version”: “2.0.0”,
“configurations”: [
{
"name": "g++ - 生成和调试活动文件",
//"label":"Compile",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ 生成活动文件",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
上述配置文件:
version
:配置文件的版本
configurations
:配置域
name
:配置文件的名字
type
:调试的类型
"request": "launch"
:配置文件的请求类型,有launch和attach两种
program
:可执行文件的位置/路径
"args"
: []:主函数调用时传入的参数,为空
cwd
:调试时的工作目录
preLaunchTask
:调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应,一般为编译程序,c++为g++, c为gcc,采用cmake的多文件编译则为build
miDebuggerPath
:调试器的路径。"miDebuggerPath": "/usr/bin/gdb"
表示gdb调试的位置为: "/usr/bin/gdb"
"/usr/bin/gdb"这个gdb调试器文件目录一般不用改,因为在linux下用命令行安装gdb时默认是装在了这里
${workspaceRoot} 当前打开的文件夹的绝对路径+文件夹的名字
${workspaceFolder}当前程序的路径,.vscode路径
${file}当前打开正在编辑的文件名,包括绝对路径,文件名,文件后缀名
${fileBasename} 当前打开的文件名+后缀名,不包括路径
${fileBasenameNoExtension} 当前打开的文件的文件名,不包括路径和后缀名
${fileDirname} 当前打开的文件所在的绝对路径,不包括文件名
${fileExtname} 当前打开的文件的后缀名
对于简单的单个文件的调试其实有自动生成的json配置也够了,在Cmake产生可执行文件的调试过程中,就需要一些稍稍复杂的配置了
{
"version": "2.0.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/XXXX",
//此处代码的含义为:加载CMake产生的可执行文件的绝对地址,build是指我们在CMake编译的时候通过会建一个
//build目录来存放编译过程中产生的一些文件,包括产生的可执行文件, XXXX代表CMake编译产生的可执行文件
//当然在上面那个launch.json中因此可执行文件就在当前目录下,所以用自动生成的路径就可以
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask":"build",
//调试CMake产生的可执行文件的时候选择使用build,其实单个.c文件也可以
"miDebuggerPath": "/usr/bin/gdb"
//这个gdb调试器文件目录一般是不用改的
//因为你在linux下用命令行安装gdb时默认是装在这里的
}
]
}
tasks.json文件:
{
"tasks":[
{
"type":"cppbuild",
"lable":"C/C++: g++ 生成活动文件",
"command":"usr/bin/g++",
"args":[
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"-std=c++11", //使用c++11
"-lpthread" //链接thread库
],
"options":{
"cwd":"${fileDirname}"
},
"problemMatcher": {
"$gcc"
},
"group":{
"kind":"build",
"isDefault":true
},
"detail":"调试器生成的任务"
}
],
"version":"2.0.0"
}
tasks.json配置文件一般不需要进行大改,直接粘过来就可以用
tasks.json配置文件的存在可以保证一个功能:
我们调试过程中如果更改了代码,这个时候我们不需要去重新make最新的可执行文件,
{
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build"
//这里写的是build文件的绝对路径,build是我们在mcake可执行文件的时候所mkdir的新目录
//这里放的是绝对路径
//即:当前你的项目文件夹下的build文件夹的路径
},
"tasks": [
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
".."
],
},
{
"label": "make",
"group": {
"kind": "build",
"isDefault": true
},
"command": "make",
"args": [
],
},
{
"label": "Build",
//这里的build文件与lauch.json文件中的"preLaunchTask"中的"build" 相同
"dependsOrder": "sequence",//按照一列来执行
"dependsOn":[
"cmake",
"make"
]
}
],
}
tasks.json中的label要与launch.json中的preLaunchTask相同
1、launch.json 和task.json 可以自动生成,不需要自己全部手敲
2、Linux和Windows上对于json文件的配置并非完全相同,需要注意
3、以上json配置目前来讲单个文件的调试是没有问题的,但是多文件的调试,以及CMake产生的可执行文件的调试不知道行不行喔,我还没试过呢
4、Linux上VScode所生成的可执行文件是带*
文件,而且文件名是绿色的,而Windows上生成的可执行文件是.exe
文件,不能将*
结尾的可执行文件在Windows上面去调试的
5、完结撒花,后会有期~
附上几篇对于launch.json、tasksjson讲解非常好的文章共参考:
VScode 调试教程 tasks.json和launch.json的设置(超详细)
launch.json和tasks.json的配置
VSCode在linux服务器下launch.json和tasks.json等文件配置
Linux系统上CMake可执行文件的编译见下一篇