Код VS | Сборка, запуск и отладка на C ++

Опубликовано: 29 Декабря, 2021

В этой статье мы обсудим настройку VS Code, необходимую для отладки точки останова. Сначала создайте файл launch.json, который настраивает VS Code для запуска отладчика GDB в начале процесса отладки. Затем создайте файл tasks.json, который сообщает VS Code, как построить (скомпилировать) программу. Наконец, внесем некоторые изменения в настройки консоли и реализуем сборку и отладку.

Программа :
Пусть ниже будет код для демонстрационных целей:

C ++

// C++ program to find the value of
// the pow(a, b) iteratively
#include <bits/stdc++.h>
using namespace std;
// Driver Code
int main()
{
int a, b, pow = 1;
// Input two numbers
cin >> a >> b;
// Iterate till b from 1
for ( int i = 1; i <= b; i++) {
pow = pow * a;
}
// Print the value
cout << pow ;
}

Launch.json

Этот файл относится к такой информации, как имя отладчика, путь к отладчику, каталог текущего файла CPP и консоль, относящаяся к данным. Ниже приведен код в файле launch.json :

 {
    // Используйте IntelliSense, чтобы узнать 
    // о возможных атрибутах.
    // Наведите курсор, чтобы просмотреть описания 
    // существующих атрибутов.
    // Для получения дополнительной информации посетите: 
    // https://go.microsoft.com/fwlink/?linkid=830387
    "версия": "0.2.0",
    "конфигурации": [
        {
            "name": "g ++. exe - построить и отладить активный файл",
            "тип": "cppdbg",
            "запрос": "запуск",
            "program": "$ {fileDirname} 
              \ $ {fileBasenameNoExtension} .exe ",
            "аргументы": [],
            "stopAtEntry": ложь,
            "cwd": "$ {workspaceFolder}",
            "среда": [],
            "externalConsole": правда,
            "MIMode": "gdb",
            "miDebuggerPath": "C: \ MinGW \ bin \ gdb.exe",
            "setupCommands": [
                {
                    "description": "Включить красивую печать для gdb",
                    "text": "-enable-pretty-Printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C / C ++: g ++. exe build active file"
        }
    ]
}

Важные термины в launch.json : вы можете либо использовать весь код, указанный выше, либо вы можете использовать код, сгенерированный на вашем компьютере автоматически. В обоих случаях необходимо принять некоторые меры предосторожности. Во-первых, убедитесь, что атрибут externalConsole отмечен как истинный (мы поймем его значение позже в этом разделе). Затем проверьте, правильно ли свойство miDebuggerPath указывает на отладчик gdb . Давайте подробно обсудим эти атрибуты:

  1. имя и тип: они говорят сами за себя, они относятся к имени и типу launch.json.
  2. запрос: указывает тип файла JSON .
  3. program: хранит подробный адрес программы, для которой файл launch.json.
  4. cwd: обозначает текущий рабочий каталог. Обратите внимание, что все адреса в файле launch.json имеют общий вид, они не относятся к какому-либо файлу.
  5. externalConsole: поскольку нет возможности обрабатывать ввод / вывод в интегрированном терминале VS Code, используйте для этого внешнюю консоль. Так что установите значение true .
  6. miDebuggerPath: указывает на расположение отладчика, это зависит от пользователя.
  7. preLaunchTask: содержит имя файла tasks.json.

Шаги:

  • Перейдите на вкладку «Выполнить» в левой части экрана и нажмите «Выполнить и отладить».

  • Вам будет предложено выбрать отладчик, выбрать C ++ (GDB / LLDB). Обратите внимание, что этот параметр появится только в том случае, если на вашем компьютере установлен и настроен MinGW (см. Эту статью, чтобы установить и настроить MinGW).

  • Затем выберите «g ++. Exe - Создать и отладить активный файл». Это относится к компилятору g ++ GNU C ++.

  • После этого появится файл Launch.json, вы можете использовать его или тот, который я предоставил выше. Еще раз убедитесь, что externalConsole отмечен как true и miDebuggerPath установлен правильно.

  • После этого нажмите кнопку воспроизведения в верхнем левом углу экрана и перейдите к файлу tasks.json.

Tasks.json :

Этот файл содержит такую информацию, как команды, используемые для компиляции, адрес компилятора, ту же метку, что и в launch.json , и некоторую другую информацию. Ниже приведен код в файле task.json :

 {
    "версия": "2.0.0",
    "задания": [
        {
            "тип": "оболочка",
            "label": "C / C ++: g ++. exe build active file",
            "команда": "C: \ MinGW \ bin \ g ++. exe",
            "аргументы": [
                "-std = c ++ 11",
                «-O2»,
                "-Стена",
                "-грамм",
                "$ {file}",
                "-о",
                "$ {fileDirname}
                 \ $ {fileBasenameNoExtension} .exe "
            ],
            "параметры": {
                "cwd": "$ {workspaceFolder}"
            },
            "проблемаМатчер": [
                "$ gcc"
            ],
            "группа": {
                "isDefault": правда,
                "добрый": "строить"
            }
        }
    ]
}



Важные термины в task.json : Вышеупомянутый файл tasks.json можно использовать без осторожности. Однако единственное, о чем нужно позаботиться, - это то, что метка tasks.json должна совпадать с preLaunchTask для Launch.json. Давайте обсудим некоторые термины более подробно:

  • label: это уникально для файла tasks.json и используется launch.json для вызова tasks.json перед его выполнением.
  • команда : это указывает на приложение компилятора g ++, так как оно будет использоваться при компиляции
  • args: эти аргументы вместе с командой при объединении выглядят так, как будто это именно та команда, которую мы используем для компиляции файла CPP и создания исполняемого файла как:

g++ -std=c++11 -O2 -Wall ${file} -o ${fileDirname}\${fileBasenameNoExtension}.exe



Шаги:

  • На последнем шаге launch.json мы нажимали кнопку воспроизведения в левом верхнем углу, теперь появляется диалоговое окно, в котором говорится, что в текущем каталоге нет файла tasks.json. Следовательно, нам нужно создать его, поэтому нажмите кнопку « Настроить» .

  • Затем нажмите «Создать файл tasks.json из шаблона» .

  • Затем нажмите « Другие» .

  • Вставьте приведенный выше код во вновь созданный файл tasks.json. Перед этим обязательно удалите существующий код.

Настройки консоли

Шаги:

  • Один момент, который уже обсуждался, - это то, что externalConsole в launch.json должна быть истинной .
  • Теперь включите заголовочный файл conio.h в нашу программу и вызовите метод get-character в последнюю очередь нашей функции main (). Это предотвратит исчезновение командной строки сразу после завершения выполнения, чтобы у нас было время проверить вывод, пока мы не нажмем какой-либо символ. Теперь код становится:

C ++

// C++ program to find the value of
// the pow(a, b) iteratively
#include <bits/stdc++.h>
#include <conio.h>
using namespace std;
// Driver Code
int main()
{
int a, b, pow = 1;
// Input two numbers
cin >> a >> b;
// Iterate till b from 1
for ( int i = 1; i <= b; i++) {
pow = pow * a;
}
// Print the value
cout << pow ;
_getch();
}
  • Поместите красную точку останова в какую-либо строку кода, которую мы хотим проверить / отладить.
  • Затем мы нажимаем кнопку воспроизведения в верхнем левом углу экрана, чтобы начать сборку.

Отладка точки останова :

Шаги:

  • В появившейся командной строке вводим требуемый ввод и нажимаем Enter .

  • Мы замечаем, что выполнение начинается и приостанавливается в указанной точке останова .

  • Теперь есть несколько вариантов, мы можем продолжить, перейти, перейти, выйти или перезапустить выполнение. Вы можете делать все, что хотите, для отладки кода.
  • Также обратите внимание на значение всех переменных во время выполнения в левой части экрана .

  • Отлаживайте как хотите и сколько хотите, а затем после завершения всего выполнения перейдите в командную строку и обратите внимание на результат .

  • После завершения изучения вывода нажмите любую клавишу, чтобы закрыть командную строку.

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по доступной для студентов цене и будьте готовы к работе в отрасли. Получите все важные математические концепции для соревновательного программирования с курсом Essential Maths for CP по доступной для студентов цене.

Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.