Как «исправить» отладчик в VScode, если у вас есть проект Makefile на C ++? - PullRequest
1 голос
/ 27 октября 2019

У меня проблема, у меня есть проект Make (несколько файлов C ++), написанный на C ++. Я пытаюсь использовать отладчик VScode для его отладки, но он просто зависает и все, Как исправить отладчик, какие параметры в VSCodes JSON я должен изменить и т. Д.
Конфигурация папки проектов:

Makefile

exe  

src (папка, в которой будут / будут храниться все файлы o и cpp h)
IN SRC FOLDER:
main.cpp
WGForeCast.h
WGForeCast.cpp etc

my task.json

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
    {
        "label": "echo",
        "type": "shell",
        "command": "make",
        "args":["${workspaceFolder}/Makefile"]
    }
]
}

my launch

{
// 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": "${workspaceFolder}/Pusk",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ]
    }
]
}

1 Ответ

1 голос
/ 09 ноября 2019

Ну, я нашел решение:
Первый
В Makefile вам необходимо добавить опцию -g flag для использования компилятором: « -g »: генерирует отладочную информациюэто используется отладчиками на основе gdb Пример добавления флага

CC=g++ -g -Wall 

На всякий случай перестройте ваш проект с добавленным флагом перед продолжением;

Во-вторых, вам нужно изменить task.json в вашем проекте
Чтобы создать файл launch.json, откройте папку вашего проекта в VS Code ( Файл> Открыть папку ), а затем выберите значок «Настроить передачу» в верхней панели «Отладка». Выберите gdb (для LInux), затем будет сгенерировано 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": "Pusk", //I named it Pusk because i can 
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/Pusk", //path to your programs exe and exe name
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

В-третьих, мы должны настроить task.json (в основном это своего рода скрипт для запуска вашей программы с использованием Makefile вместо компилятора по умолчанию).
Для создания task.json

    1)Open a folder with vscode
    2)Hit F1
    3)Select "Tasks: Configure Task Runner"
    4)Hit Enter and vscode will create a sample task.json for you

Измените task.json примерно так (вероятно, не нужен такой сложный, но ¯ (ツ) / ¯)

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
      {
        "label": "Build",
        "type": "shell",
        "command": "make", //its like writing in console make //btw you can others commands like clean make build etc
        "group": {
          "kind": "build",
          "isDefault": true
        },
        "problemMatcher": {
          "owner": "cpp",
          "fileLocation": ["relative", "${workspaceFolder}"],
          "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
          }
        }
      }
    ]
  }

Перестройте свой проект, нажав Ctrl + Shift + B (теперь это похоже на make в консоли, потому что мы изменили task.json) DATS ALL !! ВЫ МОЖЕТЕ СЕЙЧАС ИСПОЛЬЗОВАТЬ DEBUGER !!!
Source -> см. Статью "debug in vs code"

...