Visual Studio Code Debugger-Fehler: "Die Aufgabe 'gcc build active file' konnte nicht gefunden werden.

8

Ich versuche, einen C / C ++ - Arbeitsbereich in Visual Studio Code unter Ubuntu Linux zu konfigurieren, und ich weiß nicht, wie der Debugger richtig funktioniert. Ich habe aus dem Internet eine 'task.json'-Datei kopiert, um meinen Code durch Drücken von F5 kompilieren zu können, aber ich denke, dies verursacht ein Problem mit dem Debugger, da jedes Mal, wenn ich versuche, in den Debugging-Modus zu wechseln, der Fehler "Könnte Die Aufgabe 'gcc build active file' wird nicht angezeigt. Hier sind die 2 jsons: task.json

{
"version": "2.0.0",
"tasks": [
    {
        "label": "debug",
        "type": "shell",
        "command": "",
        "args": [
            "g++",
            "-g",
            "${relativeFile}",
            "-o",
            "a.exe"
        ]
    },
    {
        "label": "Compile and run",
        "type": "shell",
        "command": "",
        "args": [
            "g++",
            "-g",
            "${relativeFile}",
            "-o",
            "${fileBasenameNoExtension}.out",
            "&&",
            "clear",
            "&&",
            "./${fileBasenameNoExtension}.out"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "problemMatcher": {
            "owner": "cpp",
            "fileLocation": [
                "relative",
                "${workspaceRoot}"
            ],
            "pattern": {
                "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                "file": 1,
                "line": 2,
                "column": 3,
                "severity": 4,
                "message": 5
            }
        }
    },
    {
        "type": "shell",
        "label": "g++ build active file",
        "command": "/bin/g++",
        "args": [
            "-g",
            "${file}",
            "-o",
            "${fileDirname}/${fileBasenameNoExtension}"
        ],
        "options": {
            "cwd": "/bin"
        },
        "problemMatcher": [
            "$gcc"
        ],
        "group": "build"
    }
]

}}

launch.json

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
    {
        "name": "(gdb) Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "enter program name, for example ${workspaceFolder}/a.out",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ]
    },
    {
        "name": "gcc build and debug active file",
        "type": "cppdbg",
        "request": "launch",
        "program": "${fileDirname}/${fileBasenameNoExtension}",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ],
        "preLaunchTask": "gcc build active file",
        "miDebuggerPath": "/usr/bin/gdb"
    }
]

}}

Vielen Dank im Voraus für die Hilfe, ich bin wirklich ahnungslos.

Andy Vavilov
quelle

Antworten:

2

Sie müssen den Pfad und die Namen der Dateien angeben. Das Debuggen ist natürlich nur möglich, wenn die Binärdatei mit dem Flag g kompiliert wird (die Ausgabe wird schwerer und weniger komprimiert).

  • launch.json würde einer Binärdatei zugeordnet

    "program": "$ {workspaceFolder} /a.out",

  • task.json würde sich auf das Kompilieren beziehen

    "args": ["-g", "$ {workspaceFolder} / *. cpp", "-o", "$ {workspaceFolder} /a.out"

https://www.youtube.com/watch?v=X2tM21nmzfk&app=desktop

Wenn Sie es nicht über vscode zum Laufen bringen können, möchten Sie möglicherweise ein anderes Tool wie GDB verwenden. GDB funktioniert auch hervorragend in Terminal unter Linux / VM und möglicherweise in WSL.

Alsushi
quelle
5

In Ihrer task.jsonDatei ist keine Aufgabe als 'gcc build active file' gekennzeichnet, die als preLaunchTaskIn- launch.jsonDatei erforderlich ist .

Sie können also entweder die labelAufgabe oder den Inhalt der Aufgabe ändern preLaunchTask, damit sie übereinstimmen.

Ändern Sie einfach den Inhalt von preLaunchTaskin "g ++ build active file". Es wird klappen.

Gary Yang
quelle
Danke, es hat das Problem gelöst.
Jabba