【发布时间】:2019-02-01 03:48:17
【问题描述】:
我正在尝试在 VS Code(Windows)中为我的 c 文件创建 GDB 调试管道。你可以在下面找到我的 tasks.json 和 launch.json。
现在,如果我的源文件的路径不包含任何空格,这可以正常工作。但是,如果它确实包含空格,那么每当调试器尝试中断时,我都会收到这样的消息:
这是因为它要查找的源文件实际上位于
E:\Libraries\Dropbox\UNI\Semester 5\test.c
我猜要么是 GDB 向 VS Code 发送了错误的文件链接,要么 VS Code 不理解其文件路径中的空格(我对此表示怀疑)。抱歉,我在调试期间不太了解 GDB 和 VS Code 之间的联系。
有谁知道如何解决这个问题?
tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Build C Program",
"type": "shell",
"command": "gcc",
"options": {"cwd": "${fileDirname}"},
"args": [
"-g", "-o", "${fileBasenameNoExtension}.exe", "${fileBasename}"
],
"group": {"kind": "build","isDefault": true}
}
]
}
launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\cygwin64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "Build C Program"
}
]
}
【问题讨论】:
-
我的建议:永远不要在文件路径中放置空格,尤其是在源文件(或它们上面的某些目录)中。你会避免很多麻烦(你可以改用
_)。因为开发工具(尤其是编译器和调试器)是基于命令行的,并且命令对文件路径中的空格(它们需要以某种方式引用)不友好。 -
所以将
Semester 5重命名为Semester_5或Semester-5。这样做可以避免很多麻烦! -
Basile 说的第二点。虽然理论上可以让它工作,但它的麻烦多于它的价值。每次你转身,你都会碰到另一个工具,要么无法处理空间,要么必须以某种方式解决。
-
您询问 C 和 GDB ,然后发布 JSON 代码。
-
对于那些建议您不要在文件路径中放置空格的人,有时(尤其是在 Windows 上)这是无法避免的,例如尝试链接到 OneDrive for Business 中的某些内容时(它会迫使您在文件路径中有空格)
标签: c windows debugging visual-studio-code gdb