macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录

首先声明,这里用的是 Microsoft 的“C/C++”扩展。

安装 VS Code 后,安装这个扩展,然后按以下步骤进行调试。

  1. 打开文件夹,以桌面为例。
  2. 新建 C++ 文件,以“demo.cpp”为例。输入样例代码。

macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录_第1张图片

  1. 点击调试,弹出以下窗口,选择第一个(C++ (GDB/LLDB))。
    macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录_第2张图片

  2. 选择调试配置,如下图,会弹出一系列配置,选择第一个(clang++ build and debug active file)。如果有其他编译器需求,按自己需要的选。
    macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录_第3张图片

  3. 接下来会弹出自动生成的 launch.json,直接关闭,回到 demo.cpp,再次按调试。

macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录_第4张图片

图:自动生成的 launch.json

macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录_第5张图片

图:再次按调试后弹出的错误窗口
  1. 点击配置任务,如下图,会弹出一系列配置。

macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录_第6张图片

细心的你可以发现,前面的 launch.json 里面的 preLaunchTask 写的是“clang++ build active file”,因此这里要选第二个(C/C++: clang++ build active file)。

  1. 接下来会弹出自动生成的 tasks.json。

macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录_第7张图片

图:自动生成的 tasks.json

显然那个 args 是传给编译器的参数,于是我们可以加上 -std=c++17 以支持 C++17。修改后的 json 文件如下(不建议复制,建议自己修改):

{
     
// 有关 tasks.json 格式的文档,请参见
    // https://go.microsoft.com/fwlink/?LinkId=733558
    "version": "2.0.0",
    "tasks": [
        {
     
            "type": "shell",
            "label": "clang++ build active file",
            "command": "/usr/bin/clang++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",
                "-std=c++17"
            ],
            "options": {
     
                "cwd": "/usr/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }
    ]
}
  1. 关闭 tasks.json,回到 demo.cpp,再次按调试,可以发现能够正常生成了。

macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录_第8张图片

图:直接按调试的结果

在这里,自动跳到了调试控制台。如果没有自动跳转到调试控制台,可以手动点击它,便可以看到输出的 Hello, world!

  1. 输入数据。

如果直接在调试控制台进行输入,会发现有问题。

macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录_第9张图片

图:输入数据后按回车,提示 Unable to perform this action because the process is running.

接下来,可能就要让你失望了。实践表明,应该不能使用键盘输入。一个你可能会想到的解决办法是,让它在外部弹出一个终端窗口不香吗?然而事实上,即便你修改了 launch.json,如下图:

macOS Catalina 10.15.4 VS Code 调试单文件 C++ 实录_第10张图片

图:修改后的 launch.json,选中内容是被修改的部分

即便你把外部控制台(externalConsole)给改成 true,再回到 demo.cpp 点调试,仍然没有办法进行输入。因为根本没有外部调试控制台弹出来!只会有一个终端弹出来,但并没有运行你的程序!(如果你能成功弹出,可能是系统稍有不同)所以要输入,只有两个办法。

  1. 使用文件输入输出;
  2. 在 VS Code 中新建终端,手动进行编译和运行。

接下来尝试设置断点,发现有无法断下的情况,参见这篇博客。

安装完扩展后(建议直接下载这个链接),打开 launch.json,将 type 改成 lldb,并删掉修改后不再支持的参数(会被红线标出),然后回到 demo.cpp,直接开始调试,即可正常下断。

你可能感兴趣的:(C++)