VScode 调试C/C++时出现无法打开“X”: 找不到文件(file:///XXXX) 的解决办法

Posted on Jul 3, 2018

这个问题折腾了我许久,才发现是tasks.json那边出了问题…

也百度过很多,什么sourceFileMap都试过没啥用,后经一顿摸索,解决了问题

方法1:

这是原来的tasks.json内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
    "version": "0.1.0",
    "command": "g++",
    "args": [
        "-g",
        "{file}",
        "-o",
        "{fileBasenameNoExtension}.exe",
        "-std=c++11",
        "-Wall",
        "-fno-asm",
        "-DONLINE_JUDGE"
    ], // 编译命令参数
    "problemMatcher": {
        "owner": "cpp",
        "fileLocation": [
            "relative",
            "{workspaceRoot}"
        ],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    },
    "showOutput": "always"
}

我的解决方法是重写正则,把21行的正则改成了

1
^(.*)\\\\(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$

再把下面的file到message的数字全部加一

1
2
3
4
5
"file": 2,
"line": 3,
"column": 4,
"severity": 5,
"message": 6

就可以解决了。

方法2:

把18行的

"${workspaceRoot}"

改成

"\\"

也可以,这个方法出自 https://segmentfault.com/q/1010000009791477

我解决了问题才看到这个方法。。