我很难让F5调试器正常工作。
我一直试图遵循微软的教程,让事情顺利进行,但在成功构建之后,调试过程从未真正按照其应有的方式进行。
当我使用Ctrl + Shift +B命令构建时,它成功地创建了一个main.exe文件,但我不能以一种可以同时工作的方式更改launch.json文件。
当tasks.json将这个"-o","${fileDirname}\\${fileBasenameNoExtension}.exe"作为对象路径/名称时,'main.cpp‘被编译成main.exe。
因此,最初,我曾尝试将launch.json设置为拥有program": ${fileDirname}\\${fileBasenameNoExtension}.exe。这将是整洁和有效的,匹配将产生的构建文件。
我知道这个错误:

接下来,我尝试将launch.json更改为以a.exe硬编码的方式运行。在VSCode的PS终端中,我运行了g++ .\main.cpp并生成了一个a.exe文件。它成功地允许F5调试,当我将launch.json更改为有"program": "${workspaceFolder}\\a.exe"时,在调试控制台中给出退出代码'0‘。
我也尝试使用${workspaceFolder}\\${fileBasenameNoExtension}.exe而没有运气。
对于我来说,任务中具有相同对象名的cwd的相同参数在启动时不能成功地运行调试,这在我看来是毫无逻辑意义的。
整个tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: cpp.exe build active file",
"command": "C:\\msys64\\mingw64\\bin\\cpp.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: C:\\msys64\\mingw64\\bin\\cpp.exe"
}
]
}整个launch.json:
{
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\a.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}有人能帮我看看吗?这太令人恼火了..。提前感谢!
发布于 2022-02-12 21:14:22
我解决了问题。希望也能帮助别人。
首先,我更新了launch.json选项的体系结构部分--与文件路径问题无关,但我想我要提一下。向"targetArchitecture": "x64"文件中添加tasks.json (如有必要则添加32位选项)。
==================================================================
解决方案:经过一番周旋之后,我发现tasks.json才是问题所在,而不是launch.json。在经历了大量的混乱之后,我休息了一下,回到了问题上,注意到任务正在运行cpp.exe来构建文件。出于好奇,我用g++.exe和voilà取代了它--它很管用。
因此,如果在F5中使用VSCode中的MinGW进行编译/调试有问题--请确保g++.exe正在编译。至少根据我有限的知识,如果您正在运行VSCode并使用MinGW进行构建/调试,这将解决问题。
https://stackoverflow.com/questions/71094494
复制相似问题