如何在 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 进行调试,所以这应该是可能的。
我正在尝试使用 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 进行调试,所以这应该是可能的。