我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

文章转载自:Linux下编译、运行、调试C/C++的使用详解——知乎()。

文章非常好操性,适合新手上手,而且转录是为了不丢网页哦~

它是一种文本编辑,而不是一个集成开发环境,需要对其进行配置以在其上编译和执行代码。本教程将详细解释如何在 Linux 上配置 Code 以使用 GCC C++ 编译器 (g++) 和 GDB 调试器(GCC 是 GNU 编译器的集合,GDB 是 GNU 调试器)。配置完成后,您将被告知如何通过在其中编译和调试一个简单的 C++ 程序来执行此操作。

1. 先决条件:安装代码。安装 C++ 扩展。点击界面最左侧的图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击安装。

ubuntu真机调试_ubuntu 调试c_c-free调试

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

c-free调试_ubuntu真机调试_ubuntu 调试c

将以下代码粘贴到.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;
}

c-free调试_ubuntu 调试c_ubuntu真机调试

2.2 编译构建.cpp创建tasks.json

tasks.json 它告诉 VS Code 如何构建(编译)程序,该程序将调用 g++ 编译器从源代码创建可执行文件。在上面的主菜单中,选择>构建任务,将出现一个下拉菜单,显示 C++ 编译器的各种预定义构建任务。选择 C/C++:g++ 构建文件。

ubuntu真机调试_c-free调试_ubuntu 调试c

上述操作将自动显示在 . 文件夹中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++ 编译成功,输出将如下所示:

ubuntu真机调试_c-free调试_ubuntu 调试c

4. 如下图所示,点击 + 按钮将创建一个默认运行在当前工作目录下的 shell 终端(本例中为)。输入命令ls可查看当前目录下的所有文件,并查看已编译的可执行文件。

5. 在终端中输入 ./ 以运行可执行文件

ubuntu真机调试_ubuntu 调试c_c-free调试

修改tasks.json

可以修改tasks.json以满足某些特定需求。例如,将“${file}”替换为“${}/*.cpp”以构建多个C++文件;通过将“${}/${ion}”替换为硬编码文件名(例如“.out”)来修改输出文件名。

2.3 调试.cpp创建.json

.json文件用于在代码中配置调试器。接下来,您将创建一个.json文件。

从主菜单中,选择“运行”>“添加...”,然后选择“C++ (GDB/LLDB)”。然后,您将看到一个下拉列表,其中显示了各种预定义的调试配置,然后选择 G++ Build and Debug File。.json文件将自动生成。

ubuntu 调试c_ubuntu真机调试_c-free调试

在编辑器中打开 .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++ 扩展自动设置的断点。

ubuntu 调试c_ubuntu真机调试_c-free调试

左侧的运行视图显示调试信息,稍后将提供示例。在代码编辑器的顶部,将显示一个调试控制面板。它可以通过抓住左侧的点在屏幕上移动。

单步执行代码 单击“调试控制面板”中的“单步执行”图标或按 F10。将程序执行推进到 for 循环的第一行,并跳过 AND 类中在创建和初始化 msg 变量时调用的所有内部函数调用。请注意侧面的 窗口中的变化:

c-free调试_ubuntu真机调试_ubuntu 调试c

再次按“单步跳过”以前进到程序中的下一个语句(跳过为初始化循环而执行的所有内部代码)。“变量”窗口现在显示有关循环变量的信息。再次按“单步执行”以执行 cout 语句。(注意:截至 2019 年 3 月版本,C++ 扩展在最后一次执行 cout 之前不会将任何输出打印到调试控制台。您可以按住“单步跳过”键,直到向量中的所有单词都已打印到控制台。如果您对此感到好奇,可以尝试按“单步执行”按钮来浏览 C++ 标准库中的源代码。

c-free调试_ubuntu 调试c_ubuntu真机调试

您可以按住“单步跳过”以返回到您自己的代码。另一种方法是在代码编辑器中切换到 .cpp 来设置代码断点,例如,在循环中的 cout 语句处设置断点,将鼠标悬停在该行上,按 F9,最左侧会出现一个红点,表示该行已设置了断点。(您也可以单击代码行的最左侧来设置断点,再次单击或按 F9 取消断点)。

ubuntu真机调试_c-free调试_ubuntu 调试c

然后按 F5 从标准库头文件中的当前行开始执行。执行将在 COUT 时中断。循环完成后,您可以在集成终端的调试控制台选项中看到输出,以及 GDB 输出的一些其他诊断信息。

ubuntu 调试c_ubuntu真机调试_c-free调试

设置监控监视

要在程序执行时跟踪变量的值,您可以在变量上设置监视。

将插入点放入环内。在“监视”窗口中,单击加号,然后在文本框单词中键入循环变量的名称。在单步执行循环时,请查看“监视”窗口,以查看单词值的变化。

ubuntu真机调试_ubuntu 调试c_c-free调试

当执行在断点处暂停时,将鼠标指针悬停在变量上可快速查看该变量的值。

ubuntu 调试c_ubuntu真机调试_c-free调试

3. C/C++ 配置

如果想要更好地控制 C/C++ 扩展,可以创建一个 .json 文件,用于更改编译器路径、包含的路径、C++标准(默认为 C++17)等设置。您可以通过从命令面板 (Ctrl+Shift+P) 运行命令 C/C++: Edit (UI) 来查看 C/C++ 配置 UI。(此时。.json文件是自动生成的

)。

ubuntu 调试c_c-free调试_ubuntu真机调试

之后,C/C++ 页面打开。当您在此处进行更改时,它们将写入 .文件夹中名为 .json 的文件。

ubuntu 调试c_ubuntu真机调试_c-free调试

如果程序包含的头文件不在工作区或标准库路径中,则只需修改包含该路径的路径设置。 代码将这些设置放在 ./.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++

二维码
扫一扫在手机端查看

本文链接:https://by928.com/5181.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线