如何在 VS Code 中调试:Windows 10 和 MinGW

How to debug in VS Code: Windows 10 and MinGW

我正在尝试使用 VS Code,我在 VM 上有 Windows 和 Ubuntu,但我更喜欢在 windows 上调试。

我的老师告诉我们使用 MinGW,我用它 coding/compiling 没问题,我已经设置了 Win 环境变量。 我是调试世界的新手,也许很难从 VS Code 开始,我不知道。 我正在尝试遵循很多教程,但我不知道我是否做对了。 我必须说我使用的是 Makefile 而不是在 VS Code 中编译,我不知道是否有任何区别。 这是我的标准 Makefile:

all: Prog.exe

Prog.exe: main.o
    g++ main.o -o Prog.exe

main.o: main.cpp
    g++ -c -g -Iinclude main.cpp

.PHONY: clean
clean:
    rm -rf *.o *.exe

1)我只知道参数“-g”包含调试信息,编译过程中是否足够调试?

2) 我正在按照 VS Code 教程设置 launch.json 文件,我认为我做对了:

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": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "I:/Documenti/.../Prove debug/Prog.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:/MinGW/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "Abilita la riformattazione per gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

我在 VS Code 网站上发现:

  • tasks.json (build instructions)
  • launch.json (debugger settings)
  • c_cpp_properties.json (compiler path and IntelliSense settings)

3) 所以我只需要launch.json? 如果我没有任何 .json 文件,它会要求我在不同的配置之间进行选择:

环境配置

4) 它似乎只在第二个工作,但它跳过了断点并且没有用...... 我可以在 windows 上使用 "GDB" 吗?如果我尝试使用 GDB,在设置所有 launch.json 之后我得到这个错误:

GDB 错误

5) 我更愿意使用 MinGW 在 windows 上进行调试,这可能吗?

编辑: 我解决了,问题是 2 个大 (a, b) 和 1 个小 (c);
一个。 "program" 目录;
b. gdb/compiler 目录;
C。 task.json 文件,如果您使用 makefile 编译(或使用终端手动编译)则不需要该文件。

a: 我用我程序的完整目录替换了 "${fileDirname}\${fileBasenameNoExtension}.exe"

b:我有 2 个不同的 MinGW 目录(所以有 2 个 gdb 目录):
- 我手动安装的一个(在 C: 中);
- 另一个我安装在 Qt 里面(在 F: 里面);
当 VS Code 自动生成 "launch.json" 时,它会将我 "miDebuggerPath" (gdb 路径)设置为随 Qt 安装的 gdb(可能是为了 Win10 环境路径中的顺序),我总是将其更改为其他目录。 .. 可能如果我想更改目录,我应该将其设置在更多文件中,并且出现了 2 个不同的 gdb 目录的错误。我离开了自动目录(在 Qt 中,在 F: 中);

c:我在已经运行的调试中遇到了任务错误,所以我意识到有两个不同的活动。我解决了删除整行 "preLaunchTask": "g++.exe build active file" 和删除 "task.json" 文件。

1) 是的。 -g 开关就是您所需要的。需要说明的是,我正在将我的程序编译为

gcc -g prog.c

2) 将"externalConsole"选项设置为"true"。出于某种原因,这在它为 false 时不起作用。其他好像还行。

3) 我可以仅使用 launch.json 文件进行调试,没有其他任何东西

4) 第二个 C++ (Windows) 选项用于 Windows C/C++ 编译器,您可以使用 MSBuild 工具与 Visual Studio 一起安装并使用 cl.exe 编译器而不是 gcc/g++。如果您想尝试 Windows 编译器,您需要使用 -Zi 开关进行编译(就像 gcc/g++ 中的 -g 开关一样),您的编译命令将是

cl -Zi path\to\prog.cpp -o a.exe

当然,如果您使用的是 MinGW/gcc/g++,则不需要这个。

我不能肯定地说,但你的错误看起来是你的程序路径不正确。对 launch.json 文件中的 "program" 进行适当更改,仅供参考 我的 program 路径值为

        "program": "${workspaceFolder}/a.exe",

这里,这个a.exe位于VS Coderepository/workspace的根目录下

5) 好吧,我可以在 windows 中使用 MinGW 进行调试,所以这应该是可能的。