VS Code调试时源文件路径重复无法找到文件问题求助
调试器打开重复路径文件的问题
调试VS Code中的C程序时,触发断点后调试器尝试打开路径重复的无效文件,路径示例:C:\Users\user\Documents\AdvancedC\S2\C\Users\user\Documents\AdvancedC\S2\main.c。其中C后的特殊符号转ASCII为,实际是被错误解析的冒号,导致路径重复且无效。
解决方法
1. 在launch.json中添加路径映射
在调试配置里加入sourceFileMap,将Cygwin风格的路径映射为Windows本地路径,修正路径解析错误:
修改后的launch.json:
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/main.exe", "args": [], "logging": { "moduleLoad": false, "trace": true }, "stopAtEntry": true, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:/cygwin64/bin/gdb.exe", "sourceFileMap": { "/cygdrive/c": "C:\\" }, "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 } ] } ] }
2. 修改编译参数生成正确路径信息
在tasks.json的gcc编译参数中添加-fdebug-prefix-map,强制生成Windows格式的调试路径,避免gdb输出带Cygwin前缀的路径:
修改后的tasks.json:
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: gcc.exe build active file", "command": "C:\\cygwin64\\bin\\gcc.exe", "args": [ "-fdiagnostics-color=always", "-g", "-fdebug-prefix-map=${fileDirname}=${fileDirname}", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "Task generated by Debugger." } ], "version": "2.0.0" }
3. 确认工作区路径正确性
确保VS Code打开的工作区是C:\Users\user\Documents\AdvancedC\S2,而非嵌套路径,避免变量解析时出现路径重复。
内容的提问来源于stack exchange,提问作者gulpio
相关产品推荐
相关产品推荐

