【问题标题】:How to use the debugger in visual studio code?如何在 Visual Studio 代码中使用调试器?
【发布时间】:2020-04-06 10:52:31
【问题描述】:

我在 Ubuntu 18.04 上使用 Visual Studio Code 进行 C++ 编码。

我发现对于调试,我应该始终构建一个 a.out 文件,然后使用调试器。如果我直接通过 ctrl+alt+n 运行代码,那么代码会完全运行,但它不会给我一个 a.out 文件。

有什么方法可以使这个过程自动化吗?

我还注意到没有可用的构建选项。

这是 launch.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": "${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"
    }
]

}

【问题讨论】:

  • 在您的 Ubuntu 上安装用于 C++ 开发的 Eclipse。您将拥有一个 IDE、一个用于调试的图形 GUI、图形项目配置……
  • 请编辑您的问题并添加您用于配置工作区的 JSON 文件。

标签: c++ debugging visual-studio-code


【解决方案1】:

您可以创建自定义构建+启动任务,以通过调试器运行您的 C++ 代码。

假设我们有这个示例代码:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    cout << "Hello World!" << endl;

    vector<int> numbers{ 10, 20, 30 };
    for (int n : numbers)
    {
        cout << n << endl;
    }
}

首先,确保安装了Microsoft's C++ extension

接下来,创建一个自定义build task
这告诉 VS Code 如何编译你的代码。

  1. 打开命令面板
  2. 选择任务:配置任务
  3. 选择C/C++: g++: build active file
    • 您可以使用系统上可用的其他编译器
  4. 这将创建或打开现有的 .vscode/tasks.json 文件
  5. 配置它
    {
        "type": "shell",
        "label": "build-my-app",
        "command": "/usr/bin/g++",
        "args": [
            "-g",
            "-std=c++11",
            "${workspaceFolder}/path/to/test.cpp",
            "-o",
            "${workspaceFolder}/path/to/test.out"
        ],
        "options": {
            "cwd": "/usr/bin"
        },
        "problemMatcher": [
            "$gcc"
        ],
        "group": "build"
    }
    
    • 设置 label 以唯一命名您的自定义任务
    • 设置编译标志如-g-std=xxx-l&lt;lib&gt;-I&lt;header&gt;
    • 设置输出文件名而不是 a.out

接下来,创建一个自定义launch task
这告诉 VS Code 如何通过调试器运行您的代码。

  1. 打开命令面板
  2. 选择调试:打开launch.json
  3. 这将创建或打开现有的 .vscode/launch.json 文件
  4. 配置它
    {
        "name": "run-my-app",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/path/to/test.out",
        "preLaunchTask": "build-my-app",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "lldb"
    }
    
    • 设置 name 以唯一命名您的启动任务
    • preLaunchTask 设置为您之前创建的构建任务label
    • program 设置为您在构建任务中设置的输出文件名

最后,只要您想运行您的应用程序,只需打开“调试/运行”面板并从下拉列表中选择您的启动任务(找到您在 launch.json 中设置的name)。设置断点,然后单击“播放”按钮。

您将获得用于单步调试代码的调试器控件、变量和调用堆栈信息,以及调试控制台中的控制台输出。

【讨论】:

    【解决方案2】:

    也许你应该尝试使用标志 -g 进行编译

    类似

    g++ -g 文件.cpp

    此命令应该生成一个可执行文件和一个包含调试器可以读取的信息的目录。

    我不确定这是否适用于 VS 调试器,因为我使用 gdb(gnu 调试器),但可能会起作用

    【讨论】:

    • 是的,我知道。但我想自动化它。我不能总是去终端运行源文件。
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多