Erro do depurador de código do Visual studio: "Não foi possível encontrar a tarefa 'gcc build active file'


8

Estou tentando configurar um espaço de trabalho C / C ++ no Visual Studio Code usando o Ubuntu Linux e não sei como fazer o depurador funcionar corretamente. Copiei da Internet um arquivo 'tasks.json' para poder compilar meu código pressionando F5, mas acho que causa algum tipo de problema no depurador, pois sempre que tento entrar no modo de depuração, o erro " não encontra a tarefa 'gcc build file active' aparece. Aqui estão os 2 jsons: tasks.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"
    }
]

}

Agradeço antecipadamente pela ajuda, estou realmente sem noção.

Respostas:


2

Você precisa especificar o caminho e os nomes dos arquivos. É claro que a depuração só é possível se o binário for compilado com o sinalizador g (a saída se torna mais pesada e menos compactada).

  • launch.json seria mapeado para arquivo binário

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

  • task.json se relacionaria com como compilar

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

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

Se você não conseguir fazer isso funcionar com o vscode, convém usar outra ferramenta como o GDB. O GDB também funciona muito bem no Terminal no Linux / VM e talvez na WSL.


5

Em seu task.jsonarquivo, nenhuma tarefa é rotulado como 'arquivo ativo gcc construir' que é exigido como um preLaunchTaskem launch.jsonarquivo.

Portanto, você pode alterar a labeltarefa ou alterar o conteúdo preLaunchTaskpara torná-los correspondentes.

Apenas mude o conteúdo de preLaunchTask"g ++ build active file". Vai funcionar.


Obrigado, resolveu o problema.
Jabba
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.