PS:此文章仅适合在 Linux 平台下配置和初始化
系统:Ubuntu 20.04
Vscode 版本:1.66.2 以上即可
编程语言:以 C++ 和 Python 为例,其他语言大致相同
1、VSCode 简介 VSCode 是一款微软出的轻量级编辑器,它本身只是一款文本编辑器而已,并不是 IDE (集成开发环境),不包含编译器(compiler)和许多其他功能,所以编译器要自己装;所有的功能都是以插件扩展的形式所存在,想用什么功能就安装对应的扩展即可,非常方便,同时也支持非常多的主题和图标,外观比较好看,重要的是VSCode支持各大主流操作系统,包括Windows、Linux 和 Mac OS,属于跨平台应用。
2、VSCode 扩展
在 VSCode 里面集成了非常多的扩展可以使用,当需要用到的是时候,直接搜索进行安装即可。
在写 C++ 程序之前需要安装 C++ 的扩展。
C/C++:又名 cpptools,提供Debug和Format功能
Code Runner:右键即可编译运行单文件,很方便;但无法Debug
3、配置代码模板
在 Vscode 中写代码,每次新建一个 cpp 代码文件都要重复写 include 就觉得挺麻烦的,所以要像其他 IDE 那样新建文件,对应的代码模板就出来了,在 Vscode 中也可以用进行设置代码模板,然后一键生成!
首先通过如下路径打开选择框,文件–>首选项–>配置用户代码片段:
输入要配置的文件类型:
C++ 配置方式:
把代码片段写在json里。每个代码段都是在一个代码片段名称下定义的,并且有prefix、body和description。prefix是用来触发代码片段的。使用 $1,$2 等指定光标位置,这些数字指定了光标跳转的顺序,$0表示最终光标位置。
注意:新文件中可能会有解释代码,是用来生成空的文档的,需要将他们全部注释,包括括号(统统注释)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 "Print to console" : { "prefix" : "C++" , "body" : [ "#include <iostream>" , "#include <vector>" , "" , "using namespace std;" , "" , "int main()" , "{" , " $0" , " system(\"pause\");" , " return 0;" , "}" , "" , ] , "description" : "A cpp file template." }
在新文件中使用模板,在文件开头输入关键字 “c++” 即可:
C ++ 效果:
python 配置方式:
配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 "Print to console" : { "prefix" : "python" , "body" : [ "#!/usr/bin/env python" , "# -*-coding:utf-8 -*-" , "" , "'''" , "# Time : " , "# Author :蓝陌" , "# version : python 3.8" , "# Description : " , "'''" , "" , "$0" , ] , "description" : "A Python file template." }
在新文件中使用模板,在文件开头输入关键字 “Python” 即可
Python 效果:
其他语言的模板文件配置方法也是类似。
4、格式化代码
为什么会有格式化代码?
当每天进行 C V 工程师的工作时往往需要各种代码进行结合,多多少少会出现一些格式不一样的代码,又挺难分析他人的代码,导致所有代码乱七八糟的,这是时候就需要把代码进行整理一下。
在VSCode中进行代码格式化:
方法一:右键选择 “ 格式化文档 ”
方法二:shift+alt+F
格式化之后:
5、代码运行,代码调试 前期准备 在调试前需要配置几个 .json文件
创建一个你打算存放代码的文件夹,称作工作空间(workspace)
路径不能包含中文和引号,最好不要有空格
C和C++需要分别建立不同的文件夹,除非用虚拟工作区。
在工作空间新建文件夹,名称为.vscode
然后创建 launch.json
,tasks.json
,settings.json
(不是setting.json) 放到.vscode文件夹下。
如果不想手动创建,可以直接运行一遍调试,它会自动创建 launch.json
文件。
launch.json 该 launch.json 文件用于在 VSC 中配置调试器。
externalConsole 可根据自己喜好修改;
externalConsole 设为false可以使用内置终端
cwd 可以是程序运行时的相对路径,如果有需要可以改为${fileDirname}。
type 和 request 不变色是正常现象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 { "version" : "0.2.0" , "configurations" : [ { "name" : "(gdb) Launch" , "type" : "cppdbg" , "request" : "launch" , "program" : "${fileDirname}/${fileBasenameNoExtension}" , "args" : [ ] , "stopAtEntry" : false , "cwd" : "${workspaceFolder}" , "environment" : [ ] , "externalConsole" : true , "internalConsoleOptions" : "neverOpen" , "MIMode" : "gdb" , "miDebuggerPath" : "gdb" , "setupCommands" : [ { "description" : "Enable pretty-printing for gdb" , "text" : "-enable-pretty-printing" , "ignoreFailures" : false } ] , "preLaunchTask" : "Compile" } ] } { "configurations" : [ { "name" : "C/C++_debug" , "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" : "2.0.0" }
tasks.json 任务文件(如编译)
如果是编写 C++,编译器需要改成 g++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 { "version" : "2.0.0" , "tasks" : [ { "label" : "Compile" , "command" : "gcc" , "args" : [ "${file}" , "-o" , "${fileDirname}/${fileBasenameNoExtension}" , "-g" , "-m64" , "-Wall" , "-static-libgcc" , "-fexec-charset=GBK" , ] , "type" : "process" , "group" : { "kind" : "build" , "isDefault" : true } , "presentation" : { "echo" : true , "reveal" : "always" , "focus" : false , "panel" : "shared" } , "problemMatcher" : "$gcc" } ] } { "tasks" : [ { "type" : "cppbuild" , "label" : "C/C++: g++ 生成活动文件" , "command" : "/usr/bin/g++" , "args" : [ "-fdiagnostics-color=always" , "-g" , "${file}" , "-o" , "${fileDirname}/${fileBasenameNoExtension}" ] , "options" : { "cwd" : "${fileDirname}" } , "problemMatcher" : [ "$gcc" ] , "group" : "build" , "detail" : "调试器生成的任务。" } , { "type" : "cppbuild" , "label" : "C/C++: cpp 生成活动文件" , "command" : "/usr/bin/cpp" , "args" : [ "-fdiagnostics-color=always" , "-g" , "${file}" , "-o" , "${fileDirname}/${fileBasenameNoExtension}" ] , "options" : { "cwd" : "${fileDirname}" } , "problemMatcher" : [ "$gcc" ] , "group" : { "kind" : "build" , "isDefault" : true } , "detail" : "调试器生成的任务。" } ] , "version" : "2.0.0" }
settings.json 把这个文件里的东西放到“用户设置”里可以覆盖全局设置,否则只有在当前工作区才有效。
Code Runner的命令行和某些选项可以根据自己的需要在此处修改,想要自定义或者想知道是什么意思还是参见此扩展的文档和百度gcc使用教程。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 { "files.defaultLanguage" : "c" , "editor.formatOnType" : true , "editor.suggest.snippetsPreventQuickSuggestions" : false , "editor.acceptSuggestionOnEnter" : "off" , "code-runner.runInTerminal" : true , "code-runner.executorMap" : { "c" : "gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -O2 -m64 -lm -static-libgcc -std=c11 -fexec-charset=GBK && &'./$fileNameWithoutExt.exe'" , "cpp" : "g++ '$fileName' -o '$fileNameWithoutExt.exe' -Wall -O2 -m64 -static-libgcc -std=c++14 -fexec-charset=GBK && &'./$fileNameWithoutExt.exe'" } , "code-runner.saveFileBeforeRun" : true , "code-runner.preserveFocus" : true , "code-runner.clearPreviousOutput" : false , "code-runner.ignoreSelection" : true , "code-runner.fileDirectoryAsCwd" : true , "C_Cpp.clang_format_sortIncludes" : true , } { "editor.fontSize" : 20 , "files.associations" : { "iostream" : "cpp" , "ostream" : "cpp" , "random" : "cpp" , "typeinfo" : "cpp" } }
在源代码中直接点击行数左侧,即可增加断点,设置好断点之后,点击 “运行和调试” –(gdb)启动,如下,即可开启代码调试了。
可以在变量区直接看到变量值,完成调试目的。
常用的调试按键如下: