VSCode的C/C++扩展功能
VSCode的C/C++扩展功能
- 1. 在 Linux 上 使用 C++
- 1.1 创建 Hello World
- 1.2 探索 IntelliSense
- 1.3 构造 helloworld.cpp
- 1.3.1 运行 build
- 1.3.2 修改 tasks.json
- 1.4 Debug helloworld.cpp
- 1.4.1 启动调试会话
- 1.5 一步步执行代码
- 1.6 设置一个 Watch
- 1.7 C/C++ 配置
- 2. 一些快捷键
- 2.1 导航到当前源文件中的一个特定的符号(Ctrl+P, @符号名称)
- 2.2 导航到其他源文件中的一个特定的符号(Ctrl+P, #符号名称)
- 2.3 转到定义(F12)
- 2.4 查看定义(Alt + F12)
- 2.5 Ctrl + 光标悬停
Reference:
- Visual Studio Code的C/C++扩展功能
- Using C++ on Linux in VS Code
1. 在 Linux 上 使用 C++
1.1 创建 Hello World
从 terminal 窗口,创建一个叫做 projects
的空文件夹来存储 VS Code 项目。然后创建一个叫做 helloworld
的子文件夹,导航到里面后,输入最下面的命令打开 VS Code:
mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .
code .
命令打开当前文件夹下的 VS Code,也就是 ”workspace“。在该 workspace 内的 .vscode
文件夹下会创建三个文件:
tasks.json
(compiler build 设置)launch.json
(debugger 设置)c_cpp_properties.json
(compiler path and IntelliSense 设置)
创建文件 helloworld.cpp
并复制以下源代码:
#include <iostream>
#include <vector>
#include <string>using namespace std;int main()
{vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};for (const string& word : msg){cout << word << " ";}cout << endl;
}
1.2 探索 IntelliSense
在 helloworld.cpp
文件中,将鼠标悬停在 vector
或 string
上查看类型信息。在申明 msg
变量后面,开始输入 msg.
。这时看到一个显示所有成员函数的补全列表,以及一个显示 msg
对象类型信息的窗口:
按 Tab
键插入选中的成员。然后,当添加开括号时,会看到关于函数所需参数的信息。
1.3 构造 helloworld.cpp
这时需要创建一个 tasks.json
文件来告诉 VS Code 如何构造(搭建)该程序。这个文件会唤醒 g++ 编译器,并从源代码创建一个可执行文件。
在编辑器中打开 helloworld.cpp
非常重要,因为下一步将使用上下文编辑器中的 active file(活动文件:该文件处于可编辑或更改状态,内容、大小及属性都是可以随时间变化的) 来创建下一步的构建任务:
在主菜单中,选择 Terminal > Configure Default Build Task。下拉菜单显示了C++编译器的各种预定义构建任务,这里选择 C/C++: g++ build active file。
这里会在 .vscode
文件夹内创建一个 tasks.json
文件并在编译器内打开它。这时的 tasks.json
文件看起来应该跟下面的 JSON 相似:
{"version": "2.0.0","tasks": [{"type": "shell","label": "g++ build active file","command": "/usr/bin/g++","args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],"options": {"cwd": "/usr/bin"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true}}]
}
可以在variables reference了解更多关于
task.json
变量。
command
设置指定要运行的程序;在本例中,使用的是 g++。args
数组指定将传递给 g++ 的命令行参数。这些参数必须按照编译器期望的顺序指定。
这个文件告诉 g++ 获取 active file(${file}
),编译它,并在当前目录(${fileDirname}
)中创建一个与 active file 同名但没有扩展名(${fileBasenameNoExtension}
)(比如.exe等)的可执行文件,从而得到示例中的 helloworld
。
label
的值是会在 tasks list 中看到的,可以给它随便命名。
group
对象中的 "isDefault": true
值指定该任务将在按下 Ctrl+Shift+B 时运行。这个属性只是为了方便;如果将这个值设置为 false,仍然可以从终端菜单的 Tasks: Run Build Task 运行它。
1.3.1 运行 build
- 回到
helloworld.cpp
。现在的任务是搭建 active file,这时想要搭建helloworld.cpp
。 - 为了运行定义在
tasks.json
内的 build task,按下 Ctrl+Shift+B 或者从主菜单 Terminal 选择 Run Build Task。 - 当任务开始时,会看到集成终端面板出现在源代码编辑器下面。任务完成后,终端显示编译器的输出,指示构建是成功还是失败。对于一个成功的 g++ 构建,输出如下所示:
- 使用 + 按钮创建一个新的终端,将会拥有一个运行默认 shell 的终端,并将
helloworld
文件夹作为工作目录。运行ls
,应该看到可执行文件helloworld
(没有文件扩展名)。 - 可以通过输入
./helloworld
在终端运行helloworld
。
1.3.2 修改 tasks.json
也可以修改 tasks.json
文件,用 "${workspaceFolder}/*.cpp"
替代 ${file}
来构建多个 C++ 文件。也可以通过用硬编码的文件名(例如helloworld.out)替换 "${fileDirname}/${fileBasenameNoExtension}"
来修改输出文件名。
1.4 Debug helloworld.cpp
接下来,将创建一个 launch.json
文件。当按下 F5 调试程序时,VS Code 将启动 GDB 调试器。
从主菜单上,选择 Run > Add Configuration,然后选择 C++ (GDB/LLDB)。
然后,会看到一个用于各种预定义调试配置的下拉菜单。选择 g++ build and debug active file。这时 VS Code 创建了一个 launch.json
文件。在编辑器中打开它,并搭建和运行 ‘helloworld’。
{"version": "0.2.0","configurations": [{"name": "g++ build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "g++ build active file","miDebuggerPath": "/usr/bin/gdb"}]
}
在上面的 JSON,prgoram
指定想要去 debug 的程序。在这里,它被设置为 active file folder ${fileDirname}
和没有扩展名的 active filename ${fileBasenameNoExtension}
,如果 helloworld.cpp
是所需的 active file,那就是 helloworld
。
默认情况下,C++ 扩展不会向源代码添加任何断点,stopAtEntry
值设置为 false
。
将 stopAtEntry
值更改为 true
,以使调试器在开始调试时在 main
方法上停止。
1.4.1 启动调试会话
- 返回
hellloworld.cpp
使得该程序变为 active file。 - 按下 F5 或从主菜单中选择 Run > Start Debugging。在开始逐步分析代码之前,让我们花点时间注意用户界面中的几个变化:
- 集成终端显示在源代码编辑器的底部。在 Debug Output 选项中,可以看到显示调试器已启动并正在运行的输出。
- 编辑器高亮
main
方法中的第一个语句。这是 C++ 扩展自动为您设置的一个断点:
- 在左侧的“Run”视图中显示调试信息。将在本教程后面看到一个示例。
- 在代码编辑器的顶部,出现一个调试控制面板。可以通过抓取左边的点在屏幕上移动它。
1.5 一步步执行代码
现在开始一步步执行代码:
- 点击调试控制面板上的 Step over 图标。
这将把程序执行推进到 for 循环的第一行,并跳过在创建和初始化ms
g 变量时调用的vector
和string
类中的所有内部函数调用。注意旁边变量窗口中的变化。
- 再次按 Step over 键进入程序中的下一条语句(跳过所有用于初始化循环的内部代码)。现在,Variables 窗口显示了关于循环变量的信息。
- 再次按Step执行cout语句。(请注意,在2019年3月发布的版本中,c++扩展在最后一次cout执行之前不会向调试控制台输出任何输出。)
- 如果愿意,可以一直按 Step over 键,直到向量中的所有单词都被打印到控制台上。但如果您对此感到好奇,请尝试按 Step Into 按钮来逐步浏览 C++ 标准库中的源代码!
要返回到自己的代码,一种方法是一直按 Step over。另一种方法是在代码中设置断点,方法是切换到代码编辑器中的helloworld.cpp
标签,将插入点放在循环中cout
语句的某个位置,然后按F9。左边的 gutter 中出现一个红点,表示已在该行设置了断点。
然后按 F5 从标准库头的当前行开始执行。执行将会在cout
中断。如果愿意,可以再次按 F9 关闭断点。当循环完成时,您可以在集成终端的 Debug Console 选项卡中看到输出,以及由 GDB 输出的其他一些诊断信息。
1.6 设置一个 Watch
要在程序执行时跟踪变量的值,请对该变量设置一个 watch。
- 将插入点放置在循环内部。在 watch 窗口中,单击加号,并在文本框中输入
word
,这是循环变量的名称。现在,在遍历循环时查看 Watch 窗口。
- 要在断点上暂停执行时快速查看任何变量的值,可以使用鼠标指针悬停在该变量上。
1.7 C/C++ 配置
如果要更好地控制 C/C++ extension,可以创建一个 c_cpp_properties.json
文件,该文件将允许更改设置,例如编译器的路径、包含路径、C++标准(默认值为 C++17)等。
可以通过运行命令面板(Ctrl+Shift+P)中的命令 C/C++: Edit Configurations (UI) 来查看 C/C++ 配置 UI。
这将打开 C/C++ Configurations 页。在此处进行更改时,VS Code 会将它们写入 .vscode
文件夹中名为 c_cpp_properties.json
的文件。
仅当程序包含不在工作区或标准库路径中的头文件时,才需要修改 Include path 设置。
VS Code 将这些设置放在 .vscode/c_cpp_properties.json
中。如果直接打开该文件,它应该如下所示:
{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**"],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "clang-x64"}],"version": 4
}
2. 一些快捷键
2.1 导航到当前源文件中的一个特定的符号(Ctrl+P, @符号名称)
2.2 导航到其他源文件中的一个特定的符号(Ctrl+P, #符号名称)
2.3 转到定义(F12)
2.4 查看定义(Alt + F12)
2.5 Ctrl + 光标悬停
相关文章:
VSCode必备插件-C++等
VSCode的C/C++扩展功能相关推荐
- Vue开发常用的工具有哪些?
相比其他大型框架,Vue更加灵活,开发者既可以选择使用Vue来开发一个全新项目,也可以将Vue引入到一个现有的项目中.代码简洁.上手容易,深受开发者青睐.本节我们将对Vue的开发环境以及常用工具的使用 ...
- PyCharm vs VSCode,是时候改变你的 IDE 了!
作者 | Sohaib Ahmad 译者 | 鹿未来,责编 | 屠敏 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 也许是我有些落伍,或者也是因为JetBrain ...
- vscode 预览图片 插件_真的动手写的VSCode的插件(图片浏览)之1
由于本职工作中经常做图像处理,于时大量的图片浏览是不可避免的. 怎么样不离开最近经常使用的VSCode,同时去看大量的图像对我来讲就是个不错的需求,尤其是某个目录下的文件. 先谈基本的需求吧,显示一个 ...
- vscode主题 webstorm_从 Emacs 和 Vim 到 VSCode
在很长一段时间里,我都在使用 Emacs 作为我的主力编辑器,所用到的 配置 后来则主要是基于 子龙山人 以及他的 Spacemacs-rocks 系列 ,这些配置文件经过碎月累年的魔改和持续发酵,伴 ...
- git merge 回退_git+vscode进行版本控制
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.Git 与 SVN,CVS等其它版本控制系统最核心的区别:Git 是分布式的 首先在官网上下载:https://git- ...
- VSCode 与 WebStorm 横向对比
前言 不能认清自己,怎能看清别人? 最近很长一段时间,VSCode 似乎成为了前端口中的标准开发编辑器,前端圈到处都在推荐 VSCode,劝说其他人放弃 Sublime, WebStorm, Atom ...
- vscode/typora+picGo-core(命令行CLI)/picGo(GUI)+图片上传(github/smms)/批量上传/typora语法扩展渲染功能设置/修改本地图片存放位置配置
文章目录 typora&vscode 性能对比(渲染速度) picgo_GUI中文环境 GUI data.json 总体配置文件 命令行任意环境 安装picgo-commandLine 配置文 ...
- PyCharm vs VSCode 到底谁更牛?
点击"开发者技术前线",选择"星标????" 在看|星标|留言, 真爱 作者 | Sohaib Ahmad 译者 | 鹿未来,责编 | 屠敏 也许是我有些落伍 ...
- vsCode 源代码管理插件GitLens使用指南
第一步 在vsCode的扩展功能里搜索GitLens.Git History 下载好插件后,会出现 第二步 查看分支情况 git branch 查看本地分支 git branch -a 查看当前所在分 ...
最新文章
- 最简洁粗暴版的虚拟用户配置FTP
- 获取视频的每一帧,并保存为.jpg图片
- shell脚本一键安装nginx
- 分布式系统——网络监视系统zabbix3.4.2,以及向zabbix中添加被监视主机(一)
- 微软作为金牌会员加入Cloud Foundry基金会
- 华为软件java笔试_华为软件笔试题4.10
- java多线程信息共享 多线程管理
- 《天天数学》连载12:一月十二日
- 关于阵列卡的配置参数Cache Policy(缓存策略)
- 4 拼接_3个孩子,64㎡小户型内“镶嵌”4室一厅,餐桌还能随意拼接
- 这几款好加密软件让你不再担心担心隐私泄露!
- VS 2008的64位编译环境的安装和使用
- “但问耕耘,莫问收获”才有机会“碰运气”——新书《成功与运气:好运和精英社会的神话》解读
- 网页中有大量图片加载很慢,用什么方法进行优化
- Google Play评论抓取
- 使用transition实现图片轮播效果
- win10修改用户名_ADAMS2020中/英版软件下载和安装教程|兼容WIN10
- SqlServer数据库误删除找回
- Java 集成阿里大鱼平台短信服务发送验证码 --- 补齐注册部分
- CSS核心内容:标准流、盒子模型、浮动、定位
热门文章
- 2. ceph 初识
- 玩游戏计算机缺失msvcp140,电脑丢失msvcp140.dll的解决方法 电脑缺少msvcp140.dll怎么解决...
- python打开电脑文件_python办公自动化:自动打开word文档-docx文件怎样打开
- 微信上传图片。【代码示例】
- 智能体脂称方案的实现
- CF#692 div2
- 为什么公司选择裁员,而不是降薪
- 什么是纯虚函数 纯虚函数的作用 如何定义使用纯虚函数
- 什么是土壤水分传感器
- Android:代码撸彩妆 2(大眼,瘦脸,大长腿)