【问题标题】:How to debug in VS Code: Windows 10 and MinGW如何在 VS Code 中调试:Windows 10 和 MinGW
【发布时间】:2020-07-12 12:42:56
【问题描述】:

我正在尝试使用 VS Code,我在 VM 上安装了 Windows 和 Ubuntu,但我更喜欢在 Windows 上进行调试。

我的老师告诉我们使用MinGW,我正在使用它进行编码/编译没有问题,我已经设置了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(构建说明)
  • launch.json(调试器设置)
  • c_cpp_properties.json(编译器路径和 IntelliSense 设置)

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

环境配置

4)它似乎只适用于第二个,但它会跳过断点并且没用...... 我可以在 Windows 上使用“GDB”吗?如果我尝试使用 GDB,在设置所有 launch.json 后我会收到此错误:

GDB 错误

5) 我更喜欢在 Windows 上使用 MinGW 进行调试,可以吗?

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

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" 文件的问题。

【问题讨论】:

  • 我无法回答VSCode,但您可以调试using QtCreator/mingw-w64/msys2
  • 谢谢@MM,我已经为MinGW设置了Qt,我会试试的,但我想解决这个问题,我想我需要它来理解很多小事情:)可以'你没有回答我的任何观点吗?像我应该如何编译调试?参数“-g”够不够?
  • 我会使用-g-O0,还要检查是否没有任何剥离标志被传递给链接器

标签: c++ debugging visual-studio-code mingw vscode-debugger


【解决方案1】:

1) 是的。 -g 开关就是您所需要的。为了清楚起见,我正在将我的程序编译为

gcc -g prog.c

2) 将"externalConsole" 选项设置为“true”。出于某种原因,当它为假时,这不起作用。其余的似乎还可以。

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 Code 的存储库/工作区的根目录

5) 嗯,我可以用 MinGW 在 windows 中进行调试,所以应该可以。

【讨论】:

    猜你喜欢
    • 2020-09-19
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 2018-12-25
    • 1970-01-01
    • 2021-05-12
    • 2019-10-10
    相关资源
    最近更新 更多