VS Code:Windows下编写运行C/C++程序(GCC)
2021-03-30 06:26
标签:watch debug output 复制 external cti use 运行 单词 下载地址:https://sourceforge.net/projects/mingw-w64/files/ 方法一:直接下载在线安装器(国内网络不推荐) 方法二:下载最新版本的 命令提示符中运行以下命令查看是否有预期输出,以验证MINGW是否正确安装: 通过命令提示符,创建 在"文件资源管理器"标题栏中,选择"New File"按钮并命名文件为 复制下列代码: 你也可以启用 最左边的活动栏用于打开不同的视图,比如Search,Source Control, 和Run。本教程后面的部分你会看到Run视图。你可以在VS Code用户界面文档中找到更多关于其他视图的信息。 便笺:当你保存或添加一个C++文件,你可以看见一个来自C/C++扩展关于内部版本可用性的通知,你可以用来测试新的特性和修正。 在你新的 接下来,你需要创建一个 从主菜单栏选择Terminal > Configure Default Build Task。下拉列表将会展示C++编译器的各种预定义的构建活动下拉清单。选择g++.exe build active file将生成当前在编辑器中显示(活动)的文件。 这会在 你的新 便笺:关于 你可以使用参数像 接下来,你将创建一个 便笺: 现在您可以开始单步执行代码了。 单击或按调试控制面板中的Step over图标。 再次按下Step over前进到这个程序的下一个语句(跳过所有用于初始化循环而被执行的内部代码)。现在,Variables窗口显示有关循环变量的信息。 再次按下Step over来执行 如果你愿意,可以一直按Step over,直到vector中所有单词都被打印到控制台。但是如果你好奇,试着按下Step Into按钮在C++标准库里来单步执行源代码。 有时你可能想在程序执行的时候追踪变量的值。你可以通过在变量上设置监视来做到这一点。 如果你想要对C/C++扩展有更好的控制,你可以创建一个 你只需要添加到Include path数组设置如果你的程序包括不在你的工作空间或在标准库路径的头文件。 扩展使用 C/C++扩展尝试用基于它在系统中找到的默认编译器位置来填充 如果你安装了Visual Studio或者WSL,你或许需要变更 VS Code:Windows下编写运行C/C++程序(GCC) 标签:watch debug output 复制 external cti use 运行 单词 原文地址:https://www.cnblogs.com/kihyou/p/13566590.htmlVS Code:Windows下编写运行C/C++程序(GCC)
安装Visual Studio Code
在VS Code中安装 C/C++扩展(快捷键:Ctrl+Shift+X)
安装Mingw-w64
x86_64-posix-seh
1. 解压下载的压缩包到自己想要安装的路径下就算安装完成。配置环境变量
Path
,双击或选中点击编辑
,在编辑环境变量
窗口选择新建
,输入bin
文件夹所在路径(本机解压到的路径:C:\Program Files\mingw64
)。确定
保存修改。验证
g++ --version
gdb --version
创建Hello World
project
空文件夹用于存放VS Code项目。然后打开该文件夹,在其下创建helloword
子文件夹,导航到这个子文件夹,并输入code .
在该文件夹下打开VS Code。命令如下:mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .
code .
命令在当前文件夹下打开了VS Code,该文件夹成为了你的“工作空间”。通读教程后,你将看见工作空间的.vscode
文件夹下创建了三个文件:
task.json
(搭建说明)launch.json
(调试器设置)c_cpp_properties.json
(编译器路径和智能提示设置)添加源代码文件
helloworld.cpp
。添加hello world源代码
#include
Ctrl+S
进行保存。注意刚刚添加的文件是怎样出现在VS Code侧边栏的File Explorer视图(Ctrl+Shift+E
)中的:Auto Save
来自动保存文件的改变,通过选中File
下的Auto Save
。
探索智能提示
helloworld.cpp
文件中,鼠标悬停在vector
或者string
可以查看类型信息。在声明msg
变量后,像调用成员函数一样开始键入msg.
。你可以立刻看到一个显示所有成员函数的补全列表,和一个显示msg
对象类型信息的窗口:
你可以按Tab
键来插入已选择的成员;然后,当你添加左括号时,你会看见关于这个函数所需的所有参数的信息。构建helloworld.cpp
task.json
文件告诉VS Code怎样构建(编译)程序。这个任务将通过g++编译器创建一个基于源代码的可执行文件。.vscode
文件夹下创建一个task.json
文件并在编辑器中打开。task.json
文件应该类似于下面的JSON:{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "C/C++: g++.exe build active file",
"command": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
"args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
command
设置指定了要运行的程序;本例是g++。args
数组指定要传给 g++ 的命令行参数。这些参数必需按照编译器预期的顺序指定。这个任务告诉g++获取活动文件(${file}
),编译它,并在当前目录创建一个名字和活动文件一样但扩展名是.exe
(${fileBasenameNoExtension}.exe
)的可执行文件(${fileDirname}),我们的示例结果是helloworld.exe
。
task.json
变量,你可以在变量查询中了解更多。label
的值是你将在任务列表中看到的值;你可以命名成任何你喜欢的名字。group
对象中"isDefault": true
的值规定了当你按下Ctrl+Shift+B
时这个任务将会被运行。这个属性只是为了方便,如果你设置为false,你依然可以在Terminal
菜单中用Run Build Task
运行它。运行构建
helloworld.cpp
。你的任务构建活动文件并且你要构建helloworld.cpp
.task.json
中定义的构建任务,按Ctrl+Shift+B
或者从Terminal主菜单选择Run Build Task
+
按钮创建一个新的终端,你将会获得一个以helloworld
文件夹为工作目录的新终端。运行dir
你会看到可执行的helloworld.exe
。
helloworld.exe
(或者.\helloworld.exe
如果你使用PowerShell终端)在终端运行helloworld
。修改
tasks.json
"${workspaceFolder}\\*.cpp"
而不是${file}
来修改你的tasks.json
以构建多个C++文件。这将在你当前的文件夹构建所有的.cpp
文件。你也可以通过用一个硬编码文件名(例如"${workspaceFolder}\\myProgram.exe"
)来替换"${fileDirname}\\${fileBasenameNoExtension}.exe"
以修改输出文件名调试 helloworld.cpp
launch.json
文件来配置VS Code以在你按F5
调试程序的时候启动 GDB 调试器。
1. 在主菜单选择Run>Add Configuration...然后选择C++(GDB/LLDB)。
2. 然后你会看到一个多种预定义调试配置的下拉列表。选择g++.exe build and debug active file。
VS Code创建 launch.jsonfile
文件,在编辑器中打开它,并构建运行“helloworld”。{
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe build active file"
}
]
}
program
指定想要调试的程序。这里设置为活动文件文件夹${fileDirname}
和扩展名为.exe
的活动文件名${fileBasenameNoExtension.exe}
,如果helloworld.cpp
是活动文件将会生成helloworld.exe
。
默认下,C++扩展不会在你的源代码添加任何断点,并且stopAtEntry
的被值设置为false
。
改变stopAtEntry
的值为true
以在你启动调试器时让调试器停止在main
方法上。
preLaunchTask
用于指定在启动之前要被执行的任务。确保它华为task.json
文件的label
设置一致。启动一个调试会话
helloworld.cpp
使其成为活动文件。F5
或从主菜单选择Run > Start Debugging。在开始单步执行源代码之前,让我们花点时间注意一下用户界面的几个变化:
main
方法中的第一条语句。这是C++扩展自动为您设置的断点:
单步执行代码
这将推进程序执行到for循环的第一行,并在msg
变量被创建和初始化时跳过所有涉及到的,在vector
和string
类中的内部函数的调用。注意左侧Variables窗口的改变。
在本例中,错误时预期的,尽管循环变量名对调试器现在是可见的,语句尚未执行,所以此时没有可读取的。然而,msg
的内容是可见的,因为该语句已经完成。count
语句。(注意截至2019年三月发行的版本,C++扩展不在Debug Consle
打印任何输出直到退出循环。)
要返回你自己的代码,一种方式是继续按Step over。另一种方式是通过在编辑器中切换到hellworld.cpp
标签在你的代码设置一个断点,将插入点放在循环内count
语句上的某个位置,并按F9
。左侧空白处会出现一个红色的点表示这行设置了一个断点。
然后按F5
来从标准库标题的当前行开始执行。执行将在cout
处中断。如果你愿意,你可以再按F9
关闭断点。
当循环完成时,你可以在集成终端看见输出,以及一些其他由GDB输出的诊断信息。设置监视
Watch
窗口,点击加号并在文本框中键入word
,这是循环变量的名称。现在在单步执行循环时查看监视窗口。
int i = 0;
。然后,在循环内,添加这个语句:++i;
。现在像你上一步做的那样为i
添加监视。
C/C++配置
c_cpp_properties.json
文件,允许你改变设置,例如编译器的路线,包括路径、C++标准(默认是C++17)等。
你可以从Command Palette (Ctrl+Shift+P)
通过运行命令C/C++: Edit Configurations (UI)查看C/C++配置UI。
这打开了C/C++ Configurations页面。当你对这里进行变更时,VS Code将它们写入一个在.vscode
文件夹中,名为c_cpp_properties.json
的文件。
这里,我们将Configuration name改为GCC,设置Compiler path下拉列表到g++编译器,IntelliSense mode与编译器(gcc-x64)匹配。
Visual Studio Code 将这些设置放在.vscode\c_cpp_properties.json
。如果你直接打开这个文件,它大致如下:{
"configurations": [
{
"name": "GCC",
"includePath": ["${workspaceFolder}/**"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe",
"cStandard": "c11",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
编译器路径
compilerPath
设置来推断C++标准库头文件的路径。当扩展直到在哪里可以找到这些文件时,它会提供诸如智能补全和Go to Definition导航。compilerPath
。该扩展在几个常见的编译器位置查找。compilerPath
搜索顺序为:
compilerPath
来为你的项目匹配首选编译器。例如,如果你安装了使用i686架构的Mingw-w64 8.1.0 版本,Win32线程,sjlj异常处理安装选项,路径应该是这样的C:\Program Files (x86)\mingw-w64\i686-8.1.0-win32-sjlj-rt_v6-rev0
。下一步
.vscode
JSON文件到这,调整新工作空间路径的必要设置,项目名称,等等,并开始编码!参考:
上一篇:KMP算法
下一篇:39. 逆转数组(二)
文章标题:VS Code:Windows下编写运行C/C++程序(GCC)
文章链接:http://soscw.com/index.php/essay/69864.html