VSCode调试器设置cwd为X后无法找到源码文件该如何解决?
解决方案
方案1:配置VSCode调试路径映射(通用方案,推荐)
直接修改项目.vscode/launch.json文件,在你当前使用的调试配置项中新增sourceFileMap字段,将调试器拼接出的错误路径前缀映射到实际的源码路径即可,保留你原本的cwd配置不变。
参考配置示例:
{ "version": "0.2.0", "configurations": [ { "name": "C++ 调试", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/X/你的二进制程序", "cwd": "${workspaceFolder}/X", // 你原本必须保留的工作目录配置,无需修改 // 新增以下路径映射配置 "sourceFileMap": { // 键:调试器错误拼接出的不存在的路径前缀 "${workspaceFolder}/X/Y": "${workspaceFolder}/Y" // 如果有其他同级目录的源码需要识别,可继续新增多条映射规则 }, // 其余你原本的调试配置保持不变即可 } ] }
- 其中
${workspaceFolder}是VSCode内置变量,自动指向你打开的项目根目录,无需手动替换成绝对路径。
若上述配置不生效,可将映射规则中的前缀替换为错误提示中显示的完整绝对路径前缀,比如错误提示为
Unable to read file '/a/b/X/Y/file.cpp',就将映射键改为/a/b/X/Y,值改为/a/b/Y即可。
方案2:配置调试器原生路径替换规则
如果你使用GDB/LLDB作为调试后端,也可以直接在调试器启动命令中添加路径替换规则,修改launch.json中的setupCommands字段即可:
GDB 配置示例
"setupCommands": [ // 保留你原本的其他配置项,新增以下规则 { "text": "set substitute-path ${workspaceFolder}/X/Y ${workspaceFolder}/Y", "ignoreFailures": false } ]
LLDB 配置示例
"setupCommands": [ // 保留你原本的其他配置项,新增以下规则 { "text": "settings set target.source-map ${workspaceFolder}/X/Y ${workspaceFolder}/Y", "ignoreFailures": false } ]
两种方案任选其一即可,配置完成后重启调试就能正常识别Y目录下的源码文件,不需要修改原本的cwd配置,不影响二进制程序启动。
内容的提问来源于stack exchange,提问作者Yulia
相关产品推荐
相关产品推荐

