Сопоставьте команды отладки в visual studio с их стандартными горячими клавишами

Обновлено: 04.07.2024

Программист постоянно работает с исходными кодами. Инструменты для написания кода можно разделить на две группы: среды разработки (IDE) и редакторы. Первые предоставляют большие возможности при разработке программ: отладку, управление пакетами, интеграцию с тестами и тд. Например: Visual Studio, Intellij IDEA, Eclipse. Редакторы – легковесные программы, в которых нет таких широких возможностей как в IDE. Тем не менее они выполняют главную функцию – помогают быстро писать код. А многие из них предоставляют богатые возможности по настройке под себя. Примеры редакторов кода: Sublime Text, Atom, Notepad++.

Visual Studio Code – промежуточный вариант между IDE и простым редактором. Он позиционируется как редактор кода, но содержит ряд возможностей, свойственных средам разработки. Сегодня мы разберемся, что из себя представляет VS Code, и рассмотрим некоторые функции, которые могут вам пригодиться. Поэтому пост заинтересует и тех, кто не знаком с этим редактором, и активных пользователей, которые найдут полезное для себя.

Visual Studio Code – редактор кода от Microsoft. Он бесплатный, и скачать его можно на официальном сайте. VS Code соответствует новой политике Microsoft, поэтому он опенсорсный и работает на нескольких платформах. Рассмотрим отличительные черты этого редактора:

  • Explorer. На изображении выше открыт этот блок. В нем определяется workspace – файлы, с которыми вы работаете. Имя рабочего пространства соответствует корневой директории. Над ним перечислены все открытые в редакторе файлы. Кружком помечены те, которые не сохранены.
  • Search. Поиск по workspace. Можно искать с учетом регистра, целых слов и по шаблону. В этом же блоке работает замена строк. Для перехода в режим поиска можно использовать комбинацию CTRL + SHIFT + F . При наведении курсора на любой блок VS Code подскажет какие комбинации клавиш им соответствуют.
  • Source Control. Встроенная поддержка git и других систем контроля версий.
  • Debug. Все для отладки: Variables, Call Stack, Watch, Breakpoints.
  • Extensions. Набор всевозможных плагинов, которые можно установить. Вот список самых популярных:

В VS Code можно настроить очень многое под свои нужды. Меняйте внешний вид редактора и автоматизируйте ваши действия.

Изменение темы

Изменение настроек

Рассмотрим некоторые настройки, которые могут вам пригодиться:

  • Настройки редактирования.
    • Размер шрифта. "editor.fontSize": 14
    • Размер таба. "editor.tabSize": 4
    • Шрифт. "editor.fontFamily": "Consolas, 'Courier New', monospace"
    • Перенос слов. "editor.wordWrap": "on"

    Если с первыми тремя настройками все понятно, то последнюю нужно пояснить. Когда она включена, слово, которое не помещается по длине в размер редактора, будет целиком перенесено на следующую строку. При этом горизонтальный скролл никогда не появится. Удобная настройка, которая по умолчанию отключена.

    • Автосохранение. "files.autoSave": "on"
    • Задержка при автосохранении. "files.autoSaveDelay": 5000

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

    • Размер шрифта. "terminal.integrated.fontSize": 14
    • Выбор терминала. "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
    • Тип курсора. "terminal.integrated.cursorStyle": "line"

    Все настройки, связанные с терминалом, находятся в разделе Integrated Terminal. Например, вы можете изменить отображение курсора с блока на линию.

    Создание задач

    Зачем нужны задачи покажу на конкретном примере. Для локального запуска сайта я использую команды:

    Для того, чтобы делать это, не выходя из редактора, можно использовать встроенный терминал. Однако, можно автоматизировать и этот процесс. Для этого существуют задачи. Откроем их конфигурацию через Command Palette: Tasks. Configure Tasks . В открывшемся файле tasks.json создадим кастомную задачу.

    Однако, это несильно автоматизирует наш процесс. Для запуска этой задачи нужно открывать Command Palette и искать ее среди других команд. Чтобы запускать задачу по кнопке, откроем файл keybindings.json (в Command Palette: Preferences. Open Keyboard Shortcuts File ) и добавим нужные комбинации клавиш.

    Также задачи часто используются для автоматизации сборки кода и прогона тестов.

    Создание сниппетов

    Рассмотрим стандартные команды и соответствующие им комбинации клавиши, которые полезны в самых разных ситуациях. Маппинг команд и сочетаний клавиш можно открыть через CTRL + K, CTRL + S и переопределить на свой вкус.

    • Zen Mode ( CTRL + K, Z ). В этом режиме окно с кодом занимает весь экран. Это располагает к максимальной сосредоточенности на этом файле и работе. Он отличается от полноэкранного режима ( F11 ), в котором все пространство занимает именно редактор. В режиме Zen вы не будете отвлекаться ни на что. Для переключения на другой файл используйте комбинацию CTRL + P . Она работает во всех режимах и позволяет искать именно по файлам в рабочем пространстве. Выход из режима Zen осуществляется двойным ESC .
    • Markdown Preview ( CTRL + K, V ). Полезная операция для тех, кто пользуется Markdown. Она отображает справа от текста результаты вашей верстки.
    • Дублирование строки вниз/вверх ( ALT + SHIFT + DOWN/UP ).
    • Перемещение строки вниз/вверх ( ALT + DOWN/UP ).
    • Комментирование строки ( CTRL + / ).

    Команды выше работают и для нескольких строк.

    • Вставка новой строки вверх/вниз ( CTRL + ENTER / CTRL + SHIFT + ENTER ).
    • Выделение строки ( CTRL + I ).
    • Выделение слова ( CTRL + D ).
    • Множественный курсор. ( ALT + CLICK ).

    Мне трудно представить свой рабочий процесс без VS Code. Если вы им не пользуетесь, то советую хотя бы попробовать. Сегодня мы посмотрели на малую часть того, как можно упростить работу с кодом с помощью этого редактора. В следующий раз мы рассмотрим некоторые полезные плагины, которые есть в маркете VS Code.

    Для отладки определенной веб-страницы в Visual Studio выберите эту веб-страницу в окне Solution Explorer и щелкните на кнопке Start Debugging (Начать отладку) в панели инструментов. (Если вы в данный момент редактируете веб-страницу, которую собираетесь тестировать, то выбирать ее нет необходимости — просто щелкните на кнопке Start Debugging для ее запуска.)

    Дальнейшие события зависят от расположения вашего проекта. Если ваш проект хранится на удаленном веб-сервере или локальном виртуальном каталоге IIS, Visual Studio просто запускает браузер по умолчанию и направляет на соответствующий URL.

    Если вы использовали приложение файловой системы, Visual Studio запускает свой встроенный веб-сервер на динамически выбранном порту (который предотвращает конфликт с IIS, если он установлен). Затем Visual Studio запускает браузер по умолчанию и передает ему URL, указывающий на локальный веб-сервер. В каждом случае реальная работа — компиляция страницы и создание объектов страницы — передается рабочему процессу ASP NET.

    Тестовый сервер запускается только на время работы Visual Studio и принимает запросы исключительно от данного компьютера. После запуска встроенного веб-сервера Visual Studio добавляет в область значков панели задач представляющий его значок. Чтобы получить дополнительную информацию о тестовом сервере или завершить его работу, необходимо дважды щелкнуть на этом значке.

    Фиксация и перезапуск веб-страницы полезны, но что делать, когда необходимо отследить трудно уловимую ошибку? В этих случаях понадобятся усовершенствованные возможности отладки Visual Studio, которые рассматриваются в последующих разделах.

    Если тестовый веб-сервер используется, он запускает весь код от имени вашей пользовательской учетной записи. Это отличается от намного более ограниченного поведения, наблюдаемого в IIS, где для обеспечения безопасности применяется менее привилегированная учетная запись. Важно понимать разницу, поскольку, если приложение получает доступ к защищенным ресурсам (таким как файловая система, база данных, системный реестр или журнал регистрации событий), необходимо явно разрешить доступ пользователю IIS.

    Пошаговая отладка

    позволяет выполнять код по одной строке за раз. Выглядит она чрезвычайно просто и подразумевает выполнение следующих действий:

    Найдите в коде точку, в которой необходимо приостановить выполнение, и начните пошаговое выполнение (можно использовать любую исполняемую строку кода, но не объявление переменной, комментарий или пустую строку). Щелкните на поле возле кода строки, после чего появится точка останова, помеченная красным цветом:

    Добавление точки останова

    Теперь запустите свою программу обычным образом. Когда программа достигнет точки останова, выполнение приостановится, и вы переключитесь обратно в окно кода Visual Studio. Оператор, на котором установлена точка останова, не выполнится.

    На этом этапе доступно несколько возможностей. Вы можете выполнить текущую строку, нажав клавишу <F11>. Следующая строка кода будет помечена желтой стрелкой, указывая на то, что именно она будет выполнена. Вы можете продолжать это на протяжении всей программы, запуская по одной строке за раз нажатием <F11> и следуя пути выполнения кода. Или же вы можете выйти из этого режима и возобновить нормальное выполнение кода, нажав клавишу <F5>.

    Вместо клавиш быстрого вызова команд вроде <F11> и <F5> можно использовать кнопки панели инструментов Debug (Отладка) в Visual Studio. В качестве альтернативы можно щелкнуть правой кнопкой мыши в окне кода и выбрать опцию из контекстного меню.

    Каждый раз, когда код находится в режиме паузы, можно поместить курсор над любой переменной и просмотреть ее содержимое. Это позволяет проверить, содержит ли переменная ожидаемое значение:

    Просмотр содержимого переменной в режиме паузы

    Если вы поместите курсор над объектом, то сможете просмотреть все его свойства, щелкнув на маленьком знаке "плюс":

    Просмотр свойств объекта в режиме паузы

    Можно даже непосредственно изменить значение переменной или свойства — просто щелкните внутри окна подсказки и введите новое значение. Это позволит смоделировать сценарии, которые сложно или долго воспроизвести вручную, либо проверить специфические условия ошибок.

    В режиме паузы можно также использовать команды, перечисленные в таблице ниже. Эти команды доступны в контекстном меню, появляющемся после щелчка правой кнопкой мыши на окне кода, либо через соответствующие клавиши быстрого вызова команд.

    Перевести программу в режим паузы можно в любой момент, щелкнув на кнопке паузы в панели инструментов или выбрав в меню Debug (Отладка) команду Break All (Остановить все).

    Слежение за переменными

    В некоторых случаях может понадобиться отслеживать состояние переменной без постоянного переключения в режим паузы. В таких ситуациях более полезными оказываются окна Locals (Локальные), Autos (Автоматические) и Watch (Слежение), которые позволяют отслеживать переменные во всем приложении:

    Окна для слежения за переменными
    Окно Описание
    Locals Автоматически отображает все переменные в пределах текущей процедуры, предлагая быстрый обзор важных переменных
    Autos Автоматически отображает переменные, которые система Visual Studio определила как важные для текущего оператора в коде. Сюда могут входить, например, переменные, к которым получается доступ или которые изменяются в предыдущей строке
    Watch Отображает добавленные вами переменные. Установки слежения сохраняются вместе с проектом, чтобы можно было продолжить слежение за переменными позже. Для добавления слежения щелкните правой кнопкой мыши на переменной в коде и выберите в контекстном меню пункт Add Watch (Добавить слежение); в качестве альтернативы дважды щелкните на последней строке в окне Watch и введите имя переменной

    Каждая строка в окнах Locals, Autos и Watch предоставляет информацию о типе или классе переменной и ее текущем значении. Если переменная содержит экземпляр объекта, ее можно развернуть и просмотреть приватные члены и свойства.

    Например, в окне Locals вы увидите переменную this, которая является ссылкой на текущий объект страницы. Если вы щелкнете на знаке "плюс" возле нее, появится полный список свойств страницы (и некоторые системные значения):

    Просмотр текущего объекта страницы в окне Locals

    Окна Locals, Autos и Watch позволяют изменять переменные или свойства во время нахождения программы в режиме паузы. Дважды щелкните на текущем значении в столбце Value (Значение) и введите новое значение. Если не хватает какого-то окна слежения, отобразите его вручную, выбрав его в подменю Windows меню Debug.

    Расширенные точки останова

    Выберите в меню Debug (Отладка) команду Windows --> Breakpoints для отображения окна, в котором перечислены все точки останова в текущем проекте. Окно Breakpoints (Точки останова) предоставляет счетчик попаданий в точку останова. Дважды щелкнув на точке останова, можно переместиться в соответствующее место кода:

    Окно Breakpoints

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

    Visual Studio позволяет настраивать точки останова так, чтобы они проявлялись только в случае соблюдения определенных условий. Чтобы настроить точку останова, щелкните на ней правой кнопкой мыши и выберите одну из перечисленных ниже опций:

    Location

    Используйте эту опцию, если хотите увидеть точный файл и строку, в которой находится данная точка останова.

    Condition

    Используйте эту опцию, если хотите настроить выражение и сделать так, чтобы эта точка останова срабатывала только в случае, когда данное выражение будет истинным, или в случае его изменения с момента последнего срабатывания данной точки останова.

    Hit Count

    Используйте эту опцию, если хотите создать точку останова, которая будет приостанавливать процесс выполнения только либо после определенного количества срабатываний (например, хотя бы после 20), либо через определенное количество срабатываний (например, через каждые 5).

    Filter

    When Hit

    Второй вариант — указать в качестве такого действия запуск макроса Visual Studio, что позволит выполнить в IDE-среде практически любое действие.

    Если мы хотим научиться программировать, первое, что нам нужно, - это хорошая среда разработки для программирования. В зависимости от типа программы, которую мы хотим создать, необходимо выбрать среду, которая наилучшим образом соответствует нашим потребностям, и язык, который мы собираемся использовать. В дополнение к множеству специализированных IDE, которые мы можем найти, есть также универсальные инструменты, у которых каждый раз появляется больше последователей, учитывая их возможности. И один из лучших - это Код Visual Studio .

    Что такое код Visual Studio

    Освободи Себя Бренд «Visual Studio» имеет всегда считался средой, созданной Microsoft программировать всевозможные программы для собственной экосистемы (Windows, Сервер, Azure и т. Д.). Эта платформа всегда была проприетарной и к тому же платной (и не совсем дешевой). Однако в 2015 году Microsoft удивила пользователей, создав новый инструмент под этим брендом, полностью бесплатный и с открытым исходным кодом: Visual Studio Code.

    Сочетания клавиш в Visual Studio Code для профессионального программирования

    VSC - это кроссплатформенная и мультиязычная среда программирования создан Microsoft для всех пользователей, которым нужен простой и доступный редактор кода. Этот редактор полностью бесплатный для всех пользователей, с открытым исходным кодом (запрограммирован на Electron и Node.js) и доступен для Windows, macOS и Linux.

    Среди его основных особенностей мы можем выделить, что это полностью настраиваемый редактор . Стандартно у нас есть очень базовая функциональность, с немногим большим количеством функций, чем в обычном текстовом редакторе. Однако мы можем расширить эти функции, загрузив и установив расширения . Эти расширения могут быть найдены в самой программе и позволяют нам специализировать ее на определенных языках или добавлять другие функции, недоступные в стандартной комплектации. Кроме того, пользователи могут изменять тему и цвета в соответствии со своими вкусами или увлечениями. Перед нами один из самых универсальных редакторов кода, который мы можем найти.

    Код Visual Studio - Расширения 5

    Помимо всего вышеперечисленного, эта программа предназначена для работы с идти (и GitHub с одним из расширений, о которых мы только что говорили), включает расширенные отладка системы, подсветка синтаксиса, функция автозаполнения кода, функции для рефакторинга вашего кода и т. д.

    Если она еще не установлена, мы можем загрузить последнюю версию программы с Следующая ссылка . Помимо стабильной версии, мы также можем загрузить любую из разрабатываемых версий программы, чтобы иметь ранний доступ к последним функциям.

    Изучение сочетаний клавиш VSC

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

    Microsoft адаптировала свой редактор кода для простоты использования благодаря сочетаниям клавиш. Сочетание клавиш - это предварительно настроенная комбинация клавиш выполнить определенное действие. Эти сочетания клавиш могут быть одной клавишей (например, клавиши F) или комбинацией клавиш, обе из которых обычно используют Control или Alt в качестве средств запуска.

    • Ctrl + K + S -> открыть список сочетаний клавиш.
    • Ctrl + Shift + P -> открыть палитру команд.
    • Ctrl +, -> открыть настройки.
    • Ctrl + Shift + X -> изменить панель расширений.
    • Ctrl + T -> открыть универсальную панель быстрого поиска.
    • Ctrl + N -> открыть новый файл.
    • Ctrl + Shift + N -> открыть новое окно.
    • Ctrl + F4 -> закрыть файл.
    • Ctrl + Shift + W -> закрыть окно.
    • F11 -> поставить на весь экран.
    • Ctrl + B -> показать или скрыть боковую панель.
    • Ctrl + O -> открыть файл.
    • Ctrl + S -> сохранить файл.
    • Ctrl + Shift + S -> сохранить файл как
    • Ctrl + Shift + T -> открыть последнюю закрытую вкладку.
    • Ctrl + C -> скопировать выделение или строку, которую мы активировали в то время.
    • Ctrl + X -> вырезать выделение или линию, которую мы активировали в этот момент.
    • Ctrl + V -> вставить содержимое буфера обмена.
    • Ctrl + Shift + K -> удалить строку.
    • Главная -> перейти в начало строки.
    • Конец -> перейти в конец строки.
    • Ctrl + Home -> перейти в начало файла.
    • Ctrl + End -> перейти в конец файла.
    • Alt + вверх / вниз -> перейти на одну строку вверх или вниз.
    • Ctrl + / -> закомментировать строку.
    • Shift + Alt + A -> закомментировать область.
    • Ctrl +] -> добавить отступ.
    • Ctrl + [-> убрать отступ.
    • Ctrl + P -> перейти к файлу.
    • Ctrl + G -> перейти к строке.
    • Ctrl + T -> показать все символы.
    • Ctrl + Shift + O -> перейти к символу.
    • F8 -> перейти к следующему предупреждению компилятора.
    • Shift + F8 -> перейти к предыдущему предупреждению компилятора.
    • Ctrl + Shift + M -> показать панель проблемы.
    • Ctrl + -> разделить редактор.
    • Ctrl + 1/2/3 -> открыть один из редакторов.
    • Ctrl + Shift + Avpag -> переместить редактор вниз.
    • Ctrl + Shift + Repag -> переместить редактор вверх.

    И, конечно же, VSC покажет нам серию сочетаний клавиш, которые помогут нам редактировать код легче. Среди прочего можно выделить:

    • Ctrl + F -> открыть панель поиска.
    • Ctrl + H -> открыть панель замены.
    • Ctrl + Shift + H -> заменить в файлах.
    • F3 -> найти дальше.
    • Shift + F3 -> предыдущий поиск.
    • Alt + Enter -> выбрать все совпадения одного и того же термина.
    • Ctrl + D -> добавить текущий выбор к поиску.
    • Ctrl + L -> выбрать текущую строку.
    • Ctrl + Shift + L -> выделить все строки в текущем разделе.
    • Ctrl + F2 -> выделить все совпадения текущего слова.
    • Shift + Alt + стрелка вправо -> расширить выделение.
    • Shift + Alt + стрелка влево -> выбрать выделение.
    • Alt + Click -> добавить курсор.
    • Ctrl + Alt + вверх / вниз -> добавить курсор выше или ниже.
    • Ctrl + U -> отменить последний курсор.

    Наконец, сочетание клавиш «Ctrl +« »позволяет нам показать терминал, интегрированный в программу, что очень полезно в задачах отладки.

    Некоторые сочетания клавиш, которые мы только что видели, могут меняться в зависимости от используемой нами операционной системы. В нашем случае мы поместили сочетания клавиш для Windows, но если мы используем macOS или Linux, хотя многие из них будут совпадать, другие (например, Ctrl + F4) будут назначены другим клавишам.

    Когда вы запускаете свою программу, выполнение начинается с верхней части функции main , а затем продолжается последовательно инструкция за инструкцией, пока программа не завершится. В любой момент времени, пока ваша программа выполняется, она отслеживает множество вещей: значение используемых вами переменных, какие функции были вызваны (поэтому при возвращении из этих функций программа будет знать, куда вернуться), и текущая точка выполнения в программе (чтобы она знала, какую инструкцию выполнить следующей). Вся эта отслеживаемая информация называется состоянием программы (или, для краткости, просто состоянием).

    В предыдущих уроках мы исследовали различные способы изменения вашего кода для облегчения отладки, включая печать диагностической информации или использование логгера. Эти простые методы предназначены для проверки состояния программы во время ее выполнения. Хотя они могут быть эффективными при правильном использовании, у них все же есть недостатки: они требуют изменения вашего кода, что требует времени и может привести к появлению новых ошибок, и они загромождают ваш код, затрудняя понимание существующего кода.

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

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

    Отладчик

    Отладчик – это компьютерная программа, которая позволяет программисту контролировать выполнение программы и проверять ее состояние во время выполнения программы. Например, программист может использовать отладчик для выполнения программы построчно, по ходу проверяя значения переменных. Сравнивая фактические значения переменных с ожидаемыми или наблюдая за ходом выполнения кода, отладчик может существенно помочь в отслеживании семантических (логических) ошибок.

    Возможности отладчика двойственные: способность точно контролировать выполнение программы и возможность просматривать (и при желании изменять) состояние программы.

    Ранние отладчики, такие как gdb, были отдельными программами с интерфейсами командной строки, где программисту приходилось вводить загадочные команды, чтобы заставить их работать. Более поздние отладчики (такие как ранние версии Turbo Debugger от Borland) всё еще были автономными, но поставлялись со своими собственными «графическими» интерфейсами для облегчения работы с ними. Большинство современных IDE, доступных в наши дни, имеют встроенный отладчик, то есть отладчик использует тот же интерфейс, что и редактор кода, поэтому вы можете отлаживать программу, используя ту же среду, которую вы используете для написания кода (вместо того, чтобы переключаться между программами).

    Практически все современные отладчики содержат один и тот же стандартный набор базовых функций, однако единообразия в том, как организованы меню для доступа к этим функциям, нет, и еще меньше единообразия в сочетаниях клавиш. Хотя в наших примерах будут использоваться скриншоты Microsoft Visual Studio (и мы расскажем, как делать всё в Code::Blocks), у вас не должно возникнуть проблем с выяснением того, как получить доступ к каждой обсуждаемой нами функции, независимо от того, в какой среде разработки вы находитесь, даже если вашу IDE, мы не рассматриваем явно.

    Остаток этой главы будет посвящен изучению того, как использовать отладчик.

    Совет

    Не пренебрегайте изучением, как пользоваться отладчиком. По мере того, как ваши программы становятся более сложными, количество времени, которое вы тратите на обучение эффективному использованию встроенного отладчика, будет бледнеть по сравнению с количеством времени, которое вы сэкономите на поиске и устранении проблем.

    Предупреждение

    Прежде чем продолжить этот урок (и последующие уроки, связанные с использованием отладчика), убедитесь, что ваш проект скомпилирован, используя конфигурацию отладочной сборки (для получения дополнительной информации смотрите «0.9 – Настройка компилятора: конфигурации сборки»).

    Если вместо этого вы компилируете свой проект, используя конфигурацию релиза, функциональные возможности отладчика могут работать некорректно (например, когда вы попытаетесь начать выполнять свою программу пошагово, он просто запустит программу).

    Для пользователей Code::Blocks

    Если вы используете Code::Blocks, ваш отладчик может быть настроен правильно, а может и нет. Давайте, проверим.

    Сначала перейдите в меню Settings (Настройки) → Debugger (Отладчик). Затем откройте дерево отладчика GDB/CDB (GDB/CDB debugger) слева и выберите Default (По умолчанию). Должно открыться диалоговое окно, которое выглядит примерно так:

    Рисунок 1 Настройки отладчика в Code::Blocks

    Рисунок 1 – Настройки отладчика в Code::Blocks

    Если вы видите большую красную полосу на месте Executable path (Путь к исполняемому файлу), то вам нужно найти отладчик. Для этого нажмите кнопку … справа от поля Executable path. Затем найдите файл gdb32.exe в вашей системе – мой был в C:\Program Files (x86)\CodeBlocks\ MinGW\bin\gdb32.exe . Затем нажмите ОК.

    Для пользователей Code::Blocks

    Пошаговое выполнение

    Мы собираемся начать изучение отладчиков с изучения некоторых инструментов отладки, которые позволяют нам контролировать выполнение программы.

    Пошаговое выполнение – это название набора связанных функций отладчика, которые позволяют нам выполнять (поэтапно) наш код инструкцию за инструкцией.

    Есть несколько пошаговых команд, которые мы рассмотрим по очереди.

    Шаг с заходом (step into)

    Команда шаг с заходом (step into) выполняет следующую инструкцию в обычном пути выполнения программы, а затем приостанавливает выполнение программы, чтобы мы могли проверить состояние программы с помощью отладчика. Если выполняемый оператор содержит вызов функции, шаг с заходом заставляет программу перескакивать в начало вызываемой функции, где она приостанавливается.

    Давайте посмотрим на очень простую программу:

    Давайте отладим эту программу, используя команду шаг с заходом.

    Сначала найдите и затем выполните команду отладки шаг с заходом один раз.

    Для пользователей Visual Studio

    В Visual Studio к команде шаг с заходом (step into) можно получить доступ через меню Отладка (Debug) → Шаг с заходом (Step Into), или нажав клавишу F11 .

    Для пользователей Code::Blocks

    В Code::Blocks к команде шага с заходом можно получить доступ через меню Debug (Отладка) → Step into (Шаг с заходом), или нажав Shift + F7 .

    Для других компиляторов

    Если вы используете другую среду IDE, вы, вероятно, найдете команду step into в меню Debug (Отладка) или Run (Выполнить).

    Когда ваша программа не запущена и вы выполняете первую команду отладки, вы можете увидеть, что происходит несколько вещей:

    • При необходимости программа перекомпилируется.
    • Программа начинает выполняться. Поскольку наше приложение является консольной программой, должно открыться окно консоли. Оно будет пустым, потому что мы еще ничего не выводили.
    • В вашей IDE могут открываться некоторые диагностические окна, которые могут иметь такие названия, как «Diagnostic Tools» (средства диагностики), «Call Stack» (стек вызовов) и «Watch» (наблюдение). Некоторые из них мы рассмотрим позже – пока вы можете их игнорировать.

    Поскольку мы выполнили шаг с заходом, теперь вы должны увидеть какой-то маркер слева от открывающей скобки функции main (строка 9). В Visual Studio этот маркер представляет собой желтую стрелку (Code::Blocks использует желтый треугольник). Если вы используете другую IDE, вы должны увидеть что-то, служащее той же цели.

    Рисунок 2 Маркер строки, которая будет выполнена следующей, в Visual Studio

    Рисунок 2 – Маркер строки, которая будет выполнена следующей, в Visual Studio

    Этот маркер стрелки указывает, что указанная строка будет выполнена следующей. В этом случае отладчик сообщает нам, что следующая выполняемая строка – это открывающая скобка функции main (строка 9).

    Выполните шаг с заходом (используя соответствующую команду для вашей IDE, как описано выше), чтобы выполнить открывающую скобку, и стрелка переместится к следующей инструкции (строка 10).

    Рисунок 3 Положение маркера после выполнения открывающей фигурной скобки

    Рисунок 3 – Положение маркера после выполнения открывающей фигурной скобки

    Это означает, что следующая строка, которая будет выполнена, – это вызов функции printValue .

    Выполните шаг с заходом снова. Поскольку эта инструкция содержит вызов функции printValue , мы переходим к функции, и стрелка переместится в верхнюю часть тела printValue (строка 4).

    Рисунок 4 Положение маркера после выполнения захода в функцию printValue

    Рисунок 4 – Положение маркера после выполнения захода в функцию printValue

    Выполните шаг с заходом снова, чтобы выполнить открывающую скобку функции printValue , которая переместит стрелку на строку 5.

    Рисунок 5 Положение маркера после выполнения следующего шага с заходом

    Рисунок 5 – Положение маркера после выполнения следующего шага с заходом

    Выполните шаг с заходом снова, который выполнит инструкцию std::cout << value и переместит стрелку в строку 6.

    Предупреждение

    Поскольку operator<< реализован как функция, ваша IDE может вместо этого перейти к реализации operator<< .

    Если это произойдет, вы увидите, как ваша IDE откроет новый исходный файл, а стрелка-маркер переместится в начало функции с именем operator<< (это часть стандартной библиотеки). Закройте только что открытый исходный файл, затем найдите и выполните команду отладки шаг с выходом (step out) (если вам нужна помощь, инструкции приведены ниже в разделе «Шаг с выходом (step out)»).

    Теперь, поскольку std::cout << value выполнено, теперь мы должны увидеть, что в окне консоли появилось значение 5.

    Выполните шаг с заходом снова, чтобы выполнить закрывающую скобку функции printValue . На этом этапе printValue завершает выполнение, и управление возвращается в main .

    Вы заметите, что стрелка снова указывает на printValue !

    Рисунок 6 Положение маркера после завершения функции printValue

    Рисунок 6 – Положение маркера после завершения функции printValue

    Хотя вы можете подумать, что отладчик намеревается снова вызвать printValue , на самом деле он просто сообщает вам, что он возвращается из вызова функции.

    Выполните шаг с заходом еще три раза. На этом этапе мы выполнили все строки в нашей программе, поэтому мы закончили. Некоторые отладчики на этом этапе автоматически завершают сеанс отладки, некоторые – нет. Если ваш отладчик этого не делает, вам может потребоваться найти в меню команду Stop Debugging (остановить отладку) (в Visual Studio это находится в разделе Отладка (Debug) → Остановить отладку (Stop Debugging)).

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

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

    Шаг с обходом (step over)

    Как и шаг с заходом, команда шаг с обходом (step over) выполняет следующую инструкцию в обычном пути выполнения программы. Однако в то время как шаг с заходом будет входить в вызовы функций и выполнять их построчно, шаг с обходом выполнит всю функцию без остановки и вернет вам управление после выполнения этой функции.

    Для пользователей Visual Studio

    В Visual Studio к команде шаг с обходом (step over) можно получить доступ через меню Отладка (Debug) → Шаг с обходом (Step Over), или нажав клавишу F10 .

    Для пользователей Code::Blocks

    В Code::Blocks команда шаг с обходом называется Next line (следующая строка), и к ней можно получить доступ через меню Debug (Отладка) → Next line (Следующая строка), или нажав клавишу F7 .

    Давайте посмотрим на пример, в котором мы делаем шаг с обходом вызова функции printValue :

    Сначала используйте команду шаг с заходом, пока маркер выполнения не окажется в строке 10:

    Рисунок 7 Положение маркера перед выполнением функции printValue

    Рисунок 7 – Положение маркера перед выполнением функции printValue

    Теперь выполните шаг с обходом. Отладчик выполнит функцию (которая выводит значение 5 в окно консоли), а затем вернет управление вам в следующей инструкции (строка 12).

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

    Шаг с выходом (step out)

    В отличие от двух других пошаговых команд, шаг с выходом (step out) не просто выполняет следующую строку кода. Вместо этого он выполняет весь оставшийся код функции, которая выполняется в настоящее время, а затем возвращает управление вам, когда будет выполнен возврат из функции.

    Для пользователей Visual Studio

    В Visual Studio команду шаг с выходом можно выполнить через меню Отладка (Debug) → Шаг с выходом (Step Out), или нажав комбинацию клавиш Shift + F11 .

    Для пользователей Code::Blocks

    В Code::Blocks к команде шаг с выходом можно получить доступ через меню Debug (Отладка) → Step Out (Шаг с выходом), или нажав комбинацию клавиш Ctrl + F7 .

    Давайте посмотрим на пример этого, используя ту же программу, что и выше:

    Выполните команды шаг с заходом, пока не окажетесь внутри функции printValue с маркером выполнения в строке 4.

    Рисунок 8 Положение маркера в начале выполнения функции printValue

    Рисунок 8 – Положение маркера в начале выполнения функции printValue

    Затем выполните шаг с выходом. Вы заметите, что в окне вывода появится значение 5, и отладчик вернет вам управление после завершения функции (в строке 10).

    Рисунок 9 Положение маркера после выполнения шага с выходом в функции printValue

    Рисунок 9 – Положение маркера после выполнения шага с выходом в функции printValue

    Эта команда наиболее полезна, когда вы случайно вошли в функцию, которую не хотите отлаживать.

    Шагнули слишком далеко

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

    Если вы перешагнете намеченное место назначения, обычное дело – остановить отладку и снова ее перезапустить, соблюдая осторожность, чтобы на этот раз не пройти мимо цели.

    Шаг назад

    Некоторые отладчики (такие как Visual Studio Enterprise Edition и GDB 7.0) представили возможность пошагового выполнения, обычно называемую шагом назад или обратной отладкой. Цель шага назад – отмотать последний шаг назад, чтобы вы могли вернуть программу в предыдущее состояние. Это может быть полезно, если вы перешагнули цель, или если вы хотите повторно проверить только что выполненную инструкцию.

    Реализация шага назад требует большой сложности со стороны отладчика (потому что он должен отслеживать отдельное состояние программы для каждого шага). Из-за сложности эта возможность еще не стандартизирована и зависит от отладчика. На момент написания (январь 2019 г.) ни Visual Studio Community Edition, ни последняя версия Code::Blocks не поддерживают эту возможность. Надеюсь, что в какой-то момент в будущем она попадет в эти продукты и станет доступной для более широкого использования.

    Читайте также: