文章转载自:Linux下编译、运行、调试C/C++的使用详解——知乎()。
文章非常好操性,适合新手上手,而且转录是为了不丢网页哦~
它是一种文本编辑,而不是一个集成开发环境,需要对其进行配置以在其上编译和执行代码。本教程将详细解释如何在 Linux 上配置 Code 以使用 GCC C++ 编译器 (g++) 和 GDB 调试器(GCC 是 GNU 编译器的集合,GDB 是 GNU 调试器)。配置完成后,您将被告知如何通过在其中编译和调试一个简单的 C++ 程序来执行此操作。
1. 先决条件:安装代码。安装 C++ 扩展。点击界面最左侧的图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击安装。
3. 确保已安装 gcc。通常,系统会预装 gcc。在终端窗口中输入以下命令以验证是否已安装 gcc。
gcc -v
如果当前的 GCC 版本信息可以正确打印,则表示已预装。如果未预安装它们,请使用以下命令安装 GNU 编译器工具和 GDB 调试器:
sudo apt update # 更新软件包源
sudo apt-get install build-essential gdb
2. 你好世界
创建一个通过终端调用的文件夹来保存我们的项目,并创建子文件夹以在 / 目录中打开。
mkdir project && cd project # 创建project文件夹并进入到该目录
mkdir helloworld && cd helloworld # 创建helloworld文件夹并进入到该目录
code . # 当前工作文件夹中打开vscode,该文件夹也即是我们的工作区
项目的配置文件位于 . 文件夹中。在后续教程中,您将解释如何操作 中的构建。文件夹下的三个配置文件:
tasks.json ( build ) 并负责编译
.json( ),负责调试
.json ( path 和 ) 负责更改路径等设置
当然,您也可以直接复制配置文件的内容,并将配置文件生成为新文件。未来,我们将对文件中的一些重要关键词进行解读,以了解内容在配置文件中的具体作用。
2.1 源代码.cpp
创建一个新文件.cpp
将以下代码粘贴到.cpp上并保存 (Ctrl+S),您可以在左侧边栏的视图中看到新创建的文件.cpp。
#include
#include
#include
using namespace std;
int main()
{
vector msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
2.2 编译构建.cpp创建tasks.json
tasks.json 它告诉 VS Code 如何构建(编译)程序,该程序将调用 g++ 编译器从源代码创建可执行文件。在上面的主菜单中,选择>构建任务,将出现一个下拉菜单,显示 C++ 编译器的各种预定义构建任务。选择 C/C++:g++ 构建文件。
上述操作将自动显示在 . 文件夹中tasks.json。当然,你也可以在视图中创建一个新文件,将下面的代码复制到其中,并手动生成tasks.json,教程后面的配置文件也可以通过这种方式生成。代码如下所示:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: /usr/bin/g++"
}
]
}
注意:支持使用${}语法对配置文件中的键值字符串进行变量替换。有关tasks.json中的变量以及为调试创建的.json文件的更多信息,请参阅
对tasks.json中的一些关键词进行了说明:
:要运行的程序,在本例中为 g++。
args:args 数组包含将传递给 g++ 的命令行参数(必须按照编译器预期的顺序指定)。“${file}”表示当前打开的待编译活动文件,对其进行编译,并生成一个与当前路径${}中的活动文件同名的可执行文件“${}/${ion}”。在这种情况下,活动文件是 .cpp,生成的可执行文件是 。
label:标签值是任务列表中将要看到的内容;随意命名。
如果组中:的值为true,则可以通过按快捷键ctrl+shift+B来执行编译任务。如果值更改为 false,则还可以从菜单中选择“运行”>“运行生成任务”。
执行编译 返回到活动文件.cpp执行tasks.json中定义的编译任务。Ctrl+Shift+B 或从菜单中选择“运行”>运行生成任务。当任务开始时,“集成终端”面板将出现在源代码编辑器下方。任务执行完成后,终端会显示编译结果,如果 G++ 编译成功,输出将如下所示:
4. 如下图所示,点击 + 按钮将创建一个默认运行在当前工作目录下的 shell 终端(本例中为)。输入命令ls可查看当前目录下的所有文件,并查看已编译的可执行文件。
5. 在终端中输入 ./ 以运行可执行文件
修改tasks.json
可以修改tasks.json以满足某些特定需求。例如,将“${file}”替换为“${}/*.cpp”以构建多个C++文件;通过将“${}/${ion}”替换为硬编码文件名(例如“.out”)来修改输出文件名。
2.3 调试.cpp创建.json
.json文件用于在代码中配置调试器。接下来,您将创建一个.json文件。
从主菜单中,选择“运行”>“添加...”,然后选择“C++ (GDB/LLDB)”。然后,您将看到一个下拉列表,其中显示了各种预定义的调试配置,然后选择 G++ Build and Debug File。.json文件将自动生成。
在编辑器中打开 .json,如下所示:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++ - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
.json中的一些关键词进行了描述:
:指具有调试功能的程序,其值对应于程序的路径。此值设置为“${}/${ion}”,在本例中对应于“/”。
:默认情况下,C++ 扩展不会向源代码添加任何断点,并且值设置为 false。将值更改为 true 将导致调试器在开始调试时在 main 方法上停止。
通过按 F5 或从主菜单中选择“运行”.cpp>“开始”,开始返回调试调用以使其成为活动文件。对用户界面进行了一些更改:集成终端显示在源代码编辑器的底部,在“调试”选项卡中,您会看到指示调试器已启动并正在运行的输出。编辑器高亮显示 main 方法中的第一个语句。这是 C++ 扩展自动设置的断点。
左侧的运行视图显示调试信息,稍后将提供示例。在代码编辑器的顶部,将显示一个调试控制面板。它可以通过抓住左侧的点在屏幕上移动。
单步执行代码 单击“调试控制面板”中的“单步执行”图标或按 F10。将程序执行推进到 for 循环的第一行,并跳过 AND 类中在创建和初始化 msg 变量时调用的所有内部函数调用。请注意侧面的 窗口中的变化:
再次按“单步跳过”以前进到程序中的下一个语句(跳过为初始化循环而执行的所有内部代码)。“变量”窗口现在显示有关循环变量的信息。再次按“单步执行”以执行 cout 语句。(注意:截至 2019 年 3 月版本,C++ 扩展在最后一次执行 cout 之前不会将任何输出打印到调试控制台。您可以按住“单步跳过”键,直到向量中的所有单词都已打印到控制台。如果您对此感到好奇,可以尝试按“单步执行”按钮来浏览 C++ 标准库中的源代码。
您可以按住“单步跳过”以返回到您自己的代码。另一种方法是在代码编辑器中切换到 .cpp 来设置代码断点,例如,在循环中的 cout 语句处设置断点,将鼠标悬停在该行上,按 F9,最左侧会出现一个红点,表示该行已设置了断点。(您也可以单击代码行的最左侧来设置断点,再次单击或按 F9 取消断点)。
然后按 F5 从标准库头文件中的当前行开始执行。执行将在 COUT 时中断。循环完成后,您可以在集成终端的调试控制台选项中看到输出,以及 GDB 输出的一些其他诊断信息。
设置监控监视
要在程序执行时跟踪变量的值,您可以在变量上设置监视。
将插入点放入环内。在“监视”窗口中,单击加号,然后在文本框单词中键入循环变量的名称。在单步执行循环时,请查看“监视”窗口,以查看单词值的变化。
当执行在断点处暂停时,将鼠标指针悬停在变量上可快速查看该变量的值。
3. C/C++ 配置
如果想要更好地控制 C/C++ 扩展,可以创建一个 .json 文件,用于更改编译器路径、包含的路径、C++标准(默认为 C++17)等设置。您可以通过从命令面板 (Ctrl+Shift+P) 运行命令 C/C++: Edit (UI) 来查看 C/C++ 配置 UI。(此时。.json文件是自动生成的
)。
之后,C/C++ 页面打开。当您在此处进行更改时,它们将写入 .文件夹中名为 .json 的文件。
如果程序包含的头文件不在工作区或标准库路径中,则只需修改包含该路径的路径设置。 代码将这些设置放在 ./.json 中。如果直接打开该文件,它应如下所示:
{
"configurations": [
{
"name": "Linux",
"includePath": ["${workspaceFolder}/**"],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
重用 C++ 配置
上述操作配置为在 Linux 上使用 gcc。此配置适用于当前工作区。要重用配置,只需将相应的 JSON 文件复制到 .文件夹中,并根据需要更改源文件和可执行文件的名称。
参考
:
在 VS Code 中的 Linux 上使用 C++
扫一扫在手机端查看
-
Tags : linuxvscode配置c++环境
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。