Error del depurador de código de Visual Studio: "No se pudo encontrar la tarea 'gcc build active file'

8

Estoy tratando de configurar un espacio de trabajo C / C ++ en Visual Studio Code usando Ubuntu Linux, y no sé cómo hacer que el depurador funcione correctamente. Copié de Internet un archivo 'task.json' para poder compilar mi código presionando F5, pero creo que causa algún tipo de problema con el depurador porque cada vez que intento ingresar al modo de depuración, el error "podría no encuentra la tarea 'gcc build active file' aparece. Aquí están los 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"
    }
]

}

Gracias de antemano por la ayuda, realmente no tengo ni idea.

Andy Vavilov
fuente

Respuestas:

2

Debe especificar la ruta y los nombres de los archivos. Por supuesto, la depuración solo es posible si el binario se compila con el indicador g (la salida se vuelve más pesada y menos comprimida).

  • launch.json se asignaría a un archivo binario

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

  • task.json se relacionaría con cómo compilar

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

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

Si no puede hacer que funcione a través de vscode, es posible que desee utilizar otra herramienta como GDB. GDB también funciona muy bien en Terminal en Linux / VM y quizás WSL.

Alsushi
fuente
5

En su task.jsonarchivo, ninguna tarea está etiquetada como 'gcc build active file', que se requiere como un archivo preLaunchTaskin launch.json.

Por lo tanto, puede cambiar la labeltarea o cambiar el contenido de preLaunchTaskpara que coincidan.

Simplemente cambie el contenido de preLaunchTask"g ++ build active file". Funcionará.

Gary Yang
fuente
Gracias, resolvió el problema.
Jabba