【发布时间】: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