microsoft / microsoft/vscode-cpptools

Debugger launched executable seems not able to access wsl command

Offen
#13,641 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

debugger help wanted
Vorherrschende Sprache
TypeScript
Sterne
6.2k
Forks
1.7k
Ø Merge
14 Std. 46 Min.
Gemergte PRs (30 T.)
61

Beschreibung

Environment
  • OS and version: Windows 11
  • VS Code: 1.100.2
  • C/C++ extension: ms-vscode.cpptools@1.25.3
  • OS and version of remote machine (if applicable):
  • GDB / LLDB version: GNU gdb (GDB) 16.2
Bug Summary and Steps to Reproduce

Bug Summary:

The program launched by debugger seems not able to use wsl.
Same as #13110, manually executing the program in the same/other integrated terminal works, external works.

Access is denied. 
Error code: Wsl/Service/E_ACCESSDENIED

Image

Image

Steps to reproduce:

  1. Open a folder
  2. Create code:
  3. F5 choose detected task "C/C++: g++.exe build active file", auto-generated a tasks.json under ./.vscode
  4. Open redirected outputs
    Code:
#include <bits/stdc++.h>
using namespace std;
void closePipe(FILE *pipe)
{
    if (pipe)
    {
        pclose(pipe);
    }
}
int main(int argc, char *args[])
{
    auto pipe = popen("wsl --shell-type none -- ls . 1>pipe1 2>&1", "r");
    closePipe(pipe);
    auto pipe2 = popen("wsl --shell-type none -- ls . 1>pipe2 2>&1", "r");
    closePipe(pipe2);
    auto pipe3 = popen("dir . 1>pipe3  2>&1", "r");
    closePipe(pipe3);
    return 0;
}
Debugger Configurations
tasks.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "D:\\Build_Tool_Lib\\x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}


launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}",
            "externalConsole": false,
            "cwd": "${fileDirname}",
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\Build_Tool_Lib\\x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0\\mingw64\\bin\\gdb.exe",
            "logging": {
                "engineLogging": true,
                "trace": true,
                "traceResponse": true
            }
        }
    ]
}
Debugger Logs

Console logs

C/C++ outputs:
Launch configuration:
{
  "name": "(gdb) Launch",
  "type": "cppdbg",
  "request": "launch",
  "program": "C:\\Users\\rabbit\\Desktop\\CPPTools/Hello",
  "externalConsole": false,
  "cwd": "C:\\Users\\rabbit\\Desktop\\CPPTools",
  "MIMode": "gdb",
  "miDebuggerPath": "D:\\Build_Tool_Lib\\x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0\\mingw64\\bin\\gdb.exe",
  "logging": {
    "engineLogging": true,
    "trace": true,
    "traceResponse": true
  },
  "__configurationTarget": 6
}
Other Extensions

No response

Additional Information

No response

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere den Fehler mit den generierten .vscode/tasks.json und launch.json, lies anschließend die verknüpften Debugger-Konsolenprotokolle und vergleiche das Verhalten mit Issue #13110. Erledigt ist die Aufgabe, wenn die über den Debugger gestartete ausführbare Datei den gemeldeten wsl-Befehl ohne E_ACCESSDENIED ausführen kann, während das bestehende Terminalverhalten unbeeinträchtigt bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp, vscode
Bereich
devtools, operating-systems
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.