Отладка кода в Visual Studio
Для отладки определенной веб-страницы в 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, веб-сервера и ASP.NET предоставляет несколько интересных возможностей. Например, пока окно браузера открыто, можно по-прежнему вносить изменения в код и HTML-дескрипторы веб-страниц. Завершив внесение изменений, сохраните страницу и щелкните на кнопке Refresh (Обновить) в браузере для ее повторного запроса. Хотя всегда требуется перезапуск всей страницы для просмотра результатов внесенных изменений, это более удобно, нежели повторная сборка целиком всего проекта.
Фиксация и перезапуск веб-страницы полезны, но что делать, когда необходимо отследить трудно уловимую ошибку? В этих случаях понадобятся усовершенствованные возможности отладки 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, Autos и Watch позволяют изменять переменные или свойства во время нахождения программы в режиме паузы. Дважды щелкните на текущем значении в столбце Value (Значение) и введите новое значение. Если не хватает какого-то окна слежения, отобразите его вручную, выбрав его в подменю Windows меню Debug.
Расширенные точки останова
Выберите в меню Debug (Отладка) команду Windows —> Breakpoints для отображения окна, в котором перечислены все точки останова в текущем проекте. Окно Breakpoints (Точки останова) предоставляет счетчик попаданий в точку останова. Дважды щелкнув на точке останова, можно переместиться в соответствующее место кода:

Окно Breakpoints можно также применять для отключения точки останова без ее удаления. Это позволяет сохранить точку останова, чтобы использовать во время тестирования позже. Точки останова автоматически сохраняются в файле решения.
Visual Studio позволяет настраивать точки останова так, чтобы они проявлялись только в случае соблюдения определенных условий. Чтобы настроить точку останова, щелкните на ней правой кнопкой мыши и выберите одну из перечисленных ниже опций:
Location
Используйте эту опцию, если хотите увидеть точный файл и строку, в которой находится данная точка останова.
Condition
Используйте эту опцию, если хотите настроить выражение и сделать так, чтобы эта точка останова срабатывала только в случае, когда данное выражение будет истинным, или в случае его изменения с момента последнего срабатывания данной точки останова.
Hit Count
Используйте эту опцию, если хотите создать точку останова, которая будет приостанавливать процесс выполнения только либо после определенного количества срабатываний (например, хотя бы после 20), либо через определенное количество срабатываний (например, через каждые 5).
Filter
Используйте эту опцию, если хотите включить точку останова только для конкретных процессов или потоков. В ASP.NET эта опция применяется редко, поскольку весь код веб-страниц выполняется рабочим процессом ASP.NET, а он использует пул потоков.
When Hit
Используйте эту опцию, если хотите настроить действие, которое должно автоматически выполняться при каждом срабатывании точки останова. Существует два удобных варианта. Первый — указать в качестве такого действия вывод сообщения в окне Debug (Отладка), что позволит следить за ходом выполнения кода без его загромождения операторами Debug.Write(). Такой прием называется созданием точек трассировки (tracepoint).
Второй вариант — указать в качестве такого действия запуск макроса Visual Studio, что позволит выполнить в IDE-среде практически любое действие.
How to stop a command in the Visual Studio Code terminal
I’ve been stopping commands with the trash can for too long. Command period doesn’t work on Mac. I can’t find anywhere how to stop the terminal via a command. What is it?
![]()
13 Answers 13
You can terminate with the Trash icon like you do, or press Ctrl + C . That’s the shortcut from the default Terminal application and it also works in Visual Studio Code.
![]()
Ctrl + C works in the terminal, but it didn’t work for me in Visual Studio Code. However, hitting Q did (when running a git diff for example).
![]()
In certain cases, such as running a Node.js server, Ctrl + C wouldn’t work. Instead, you can stop the app or command by pressing Ctrl + Alt + M (i.e., Ctrl + Option + M for Mac users).
Sample JavaScript code to demonstrate this:
![]()
If you are on Linux, open the shortcuts:

Then type kill, and this option will appear.
Double-click on the record, choose a shortcut for it, open the terminal, Ctrl + J , and press the shortcut you chose.

The difference in pressing Ctrl + J and then Ctrl + J again to close, is that it will not keep the terminal process, but only close it.
Отладка программы в редакторе Visual Studio Code
Сделать поиск ошибок более эффективным позволяет отладчик, встроенный в редактор Visual Studio Code (далее VS Code). С его помощью можно выполнять программу по шагам, при этом контролируя значения переменных на каждом шаге. Отладчик позволяет также проверить, соответствует ли порядок выполнения инструкций разработанному ранее алгоритму.
Для установки VS Code переходим на сайт https://code.visualstudio.com/ и скачиваем программу установки из раздела User Installer. Установка предельно проста и в комментариях не нуждается. После установки запускаем редактор.
По умолчанию редактор не содержит поддержки русского языка и языка Go. Чтобы интерфейс был на русском языке установим языковое расширение. Для этого в меню Вид выбираем пункт Расширения или нажимаем комбинацию клавиш <Shift>+<Ctrl>+<X>. В результате отобразится панель Расширения. В строке поиска вводим «Russian Language Pack for Visual Studio Code». Выбираем расширение из списка и устанавливаем его. Точно также устанавливаем расширение Go. После установки расширений перезапускаем редактор.
Теперь переходим к настройкам. В меню Файл выбираем пункт Настройки | Параметры или нажимаем комбинацию клавиш <Ctrl>+<Запятая>. Выполняем настройку следующих параметров в разделе Пользователь (вводим их названия в поле для поиска):
- Editor: Font Family — содержит названия используемых шрифтов. Рекомендуем значение «Consolas, ‘Courier New’, Consolas, monospace».
- Editor: Font Size — задает размер шрифта. Можете подобрать удобное значение, например, 16 .
- Editor: Tab Size — число пробелов в табуляции. Вводим значение 3 .
- Editor: Detect Indentation — сбрасываем флажок, чтобы всегда использовать пробелы вместо символов табуляции.
- Editor: Mouse Wheel Zoom — если флажок установлен, то изменять масштаб можно с помощью колесика мыши, удерживая нажатой клавишу <Ctrl>.
- Editor: Word Wrap — задает стиль переноса длинных строк. Из списка выбираем пункт bounded, чтобы длинные строки автоматически переносились на новую строку.
- Editor: Word Wrap Column — задает количество символов в строке. Должно быть указано значение 80 (используется по умолчанию).
- Files: Auto Save — управляет автоматическим сохранением файла. Рекомендуем из списка выбрать пункт onFocusChange, при котором файл будет автоматически сохраняться при потере фокуса ввода. Начинающие программисты очень часто забывают сохранить изменения. При этой настройке не будет глупых вопросов, почему изменения в файл внес, а результат выполнения программы не изменился?
- Editor: Links — снимите флажок, если не хотите, чтобы внутри файла выделялись ссылки. С одной стороны удобно открывать файл переходом по ссылке, но с другой стороны подчеркнутые ссылки мешают.
- Files: Encoding — из списка выбираем пункт utf8. Мы будем работать с кодировкой UTF-8 без BOM (метки порядка байтов).
- Files: Eol — задает символ перевода строк. Из списка выбираем пункт \n. Чтобы сменить символ перевода строк для текущего файла в строке состояния щелкаем левой кнопкой мыши на значке CRLF или LF, а затем из списка выбираем нужный пункт.
Точно таким же способом можно произвести и другие настройки. Все произведенные изменения настроек в разделе Пользователь сохраняются в файле settings.json , который расположен в каталоге C:\Users\< Имя пользователя >\AppData\Roaming\Code\User . Этот файл можно открыть в редакторе и изменить. Для открытия файла settings.json , в редакторе VS Code справа в строке заголовков вкладок щелкаем левой кнопкой мыши на значке Открыть параметры (JSON). Содержимое файла отобразится на отдельной вкладке.
Если изменение настроек выполняется в разделе Рабочая область, то файл settings.json создается в каталоге проекта во вложенном каталоге . vscode . Таким образом можно для каждого проекта добавить свой собственный конфигурационный файл с различными настройками.
Теперь откроем каталог C:\book\packages в редакторе. Для этого в меню Файл выбираем пункт Открыть папку. В открывшемся окне выбираем каталог и нажимаем кнопку Выбор папки. Можно также перетащить значок каталога из Проводника Windows на боковую панель Проводник. Как только на панели изменился цвет фона на синий сбрасываем значок. Это самый простой и наиболее часто используемый способ открытия каталога. Внутри панели Проводник щелкаем на названии файла main.go , чтобы отобразить его содержимое на отдельной вкладке.
В процессе работы с программой на языке Go редактор выведет запрос на установку дополнительных пакетов. Вот список пакетов и процесс установки:
Теперь создадим конфигурацию отладки. Для этого переходим на боковую панель Запустить. Для отображения панели в меню Вид выбираем пункт Выполнить или нажимаем комбинацию клавиш <Shift>+<Ctrl>+<D>. Далее переходим по ссылке создайте файл launch.json . Отобразится Палитра команд с возможными вариантами конфигурации. Выбираем пункт Go Launch Package. В результате будет создан файл C:\book\packages\.vscode\launch.json со следующим содержимым:
Все готово для запуска отладки.
В качестве примера мы будем отлаживать программу из листинга 13.4, которая содержит две наиболее часто встречающиеся ошибки: выход за пределы слайса и нумерация элементов слайса с 1 , а не с 0 .
Листинг 13.4. Содержимое файла C:\book\packages\main.go
Прежде чем начать отладку, необходимо пометить строки внутри программы с помощью точек останова. Для добавления точки останова делаем строку активной, а затем в меню Выполнить выбираем пункт Переключить точку останова или нажимаем клавишу <F9>, — слева от строки появится красный кружок, обозначающий точку останова. Повторное действие убирает точку останова. Добавить точку останова можно еще быстрее. Для этого достаточно выполнить щелчок левой кнопкой мыши слева от строки. Повторный двойной щелчок позволяет удалить точку останова. Чтобы изменить свойства точки, временно отключить или удалить ее, следует щелкнуть на ней правой кнопкой мыши и в открывшемся контекстном меню выбрать пункт Отключить, Включить или Удалить. Давайте установим в нашей программе две точки останова: напротив строк 10 и 13.
Отладка программы выполняется на панели Запустить. Для отображения панели в меню Вид выбираем пункт Выполнить или нажимаем комбинацию клавиш <Shift>+<Ctrl>+<D>. На панели расположен раздел Точки останова, внутри которого отображаются все установленные точки останова. С помощью этого раздела можно управлять точками останова: временно отключать их, удалять и т. д. Нам также понадобится консоль в которую будет выводиться отладочная информация. Чтобы отобразить консоль в меню Вид выбираем пункт Консоль отладки или нажимаем комбинацию клавиш <Shift>+<Ctrl>+<Y>.
Когда точки останова расставлены, можно начать отладку. Для этого в меню Выполнить выбираем пункт Запустить отладку или нажимаем клавишу <F5>. При достижении точки останова выполнение программы прерывается, и отладчик ожидает дальнейших действий программиста. Инструкция, которая будет выполняться на следующем шаге, помечается желтым фоном. Чтобы прервать отладку, в меню Выполнить выбираем пункт Остановить отладку или нажимаем комбинацию клавиш <Shift>+<F5>.
После запуска отладчика выполнение программы прервется на строке 10 — в том месте, где установлена первая точка останова. В режиме прерывания можно посмотреть значения различных переменных. Для этого достаточно навести указатель мыши на название переменной. Попробуйте навести указатель на название слайса arr — во всплывающем окне отобразятся значения всех элементов слайса. Если навести указатель мыши на переменные i и j , то мы не получим их значений, так как поток управления еще не дошел до этих переменных. Их значение мы увидим только после следующего шага.
Посмотреть значения сразу всех переменных можно в разделе Переменные на панели Запустить. При отладке можно контролировать значения отдельных переменных, а не всех сразу. Для этого следует добавить название переменной в разделе Контрольное значение на панели Запустить, щелкнув левой кнопкой мыши на значке Добавить выражение., расположенном в заголовке раздела. Давайте добавим в этом разделе переменные i и j .
Для пошагового выполнения программы предназначены следующие пункты в меню Выполнить или соответствующие кнопки на панели инструментов:
- Шаг с заходом (клавиша <F11>) — выполняет одну инструкцию или выражение. Давайте сделаем один шаг и посмотрим на значения переменных i и j в разделе Контрольное значение — обе переменные получили значение 0 . Делаем еще два шага и останавливаемся на строке 13, которая у нас помечена точкой останова. Если мы сделаем еще один шаг, то попадем внутрь функции print() . Обратите внимание на значения переменных i и j в окне Контрольное значение — они стали не определены, так как мы находимся в области видимости функции print() ;
- Шаг с выходом (комбинация клавиш <Shift>+<F11>) — позволяет сразу выйти из функции. Давайте сделаем шаг и выйдем из функции print() . В результате текущей станет строка 13;
- Шаг с обходом (клавиша <F10>) — выполняет одну инструкцию. Если в инструкции производится вызов функции, то функция выполняется, и отладчик переходит в режим ожидания после выхода из функции. Давайте сделаем три шага и окажемся на строке 12, не входя в функцию print() ;
- Продолжить (клавиша <F5>) — выполняет инструкции до следующей точки останова или до конца программы при отсутствии точек. Нажимая клавишу <F5>, мы каждый раз будем останавливаться на строке 13 и сможем наблюдать за текущими значениями переменных i и j в разделе Контрольное значение, а также за выводом результатов работы программы на панели Консоль отладки. На одном из шагов можно обнаружить, что значение переменной i стало равно 2 , и сразу после следующего шага возникает паника. Если вы не успели этого заметить, то запустите отладку еще раз и наблюдайте за значениями переменных. Так как значение переменной i стало равно 2 , а в следующей строке идет обращение к слайсу по этому индексу, и возникает исключение, следовательно, что-то не так со значением переменной i . Смотрим внимательно на предыдущую инструкцию и обнаруживаем неправильное условие окончания цикла в строке 11 ( i <= len(arr) ). Исправляем ошибку, и выражение примет вид i < len(arr) . Опять запускаем отладку, чтобы убедиться в правильности внесенных изменений.
Если мы попробуем перейти сразу к строке 15, то это не получится, так как существует точка останова на строке 13. А нам бы хотелось увидеть вывод одной строки слайса сразу. Для этого можно временно отключить точку останова, щелкнув на ней правой кнопкой мыши и выбрав в контекстном меню пункт Отключить. Если у нас точек будет много, то каждый раз выбирать пункт из контекстного меню станет утомительно. Можно временно отключить сразу все точки останова, выбрав в разделе Точки останова пункт Отключить точки останова.
Давайте отключим точку останова на строке 13 и добавим точку на строке 15. Теперь, нажав клавишу <F5>, можно сразу перейти к строке 15. После этого действия мы заметим, что вместо четырех значений выводятся только три. Чтобы понять причину, опять выполняем программу по шагам и наблюдаем за значениями переменных в разделе Контрольное значение. В один прекрасный момент понимаем, что индексы нумеруются с 0 , а не с 1 , и исправляем ошибку в строке 12 ( j = 0 вместо j = 1 );
- Остановить отладку (комбинация клавиш <Shift>+<F5>) — останавливает отладку.
Применение отладки — это самый эффективный способ нахождения ошибок, не требующий вставки никаких инструкций вывода промежуточных значений в текст программы. На каждом шаге мы и так можем наблюдать за значениями всех или только избранных переменных. После отладки не нужно удалять или временно отключать какие-либо инструкции, даже точки останова убирать не нужно. При обычном выполнении точки останова ни на что не влияют. Пользуйтесь отладкой при возникновении любой ошибки, и вы очень быстро ее найдете и исправите.

Учебник Go (Golang) в формате PDF
Как заставить Visual Studio приостановить работу после запуска консольного приложения в режиме отладки?
У меня есть набор тестов модулей Boost, которые я хочу запустить в качестве консольного приложения.
Когда я работаю над проектом, и я запускаю тесты, я хотел бы иметь возможность отлаживать тесты, и я хотел бы, чтобы консоль оставалась открытой после запуска тестов.
Я вижу, что если я запускаю в режиме выпуска, консольное окно остается после выхода программы, но в режиме отладки это не так.
Я не хочу добавлять ‘system ( «pause» ); или любые другие хаки, такие как чтение персонажа в моей программе. Я просто хочу сделать паузу в Visual Studio после запуска тестов с отладкой, как если бы я работал в режиме выпуска. Мне также хотелось бы, чтобы результат тестов был захвачен в одном из окон вывода Visual Studio, но это также кажется более сложным, чем должно быть.
Как я могу это сделать?
16 ответов
Boost test предлагает следующие рекомендации по использованию для Visual Studio, которые позволят вам автоматически запускать модульные тесты в конце компиляции и захвата выход в окно сборки.
Хороший побочный эффект этого трюка заключается в том, что он позволяет обрабатывать тестовые сбои как ошибки компиляции. «. вы можете перепрыгнуть через эти ошибки, используя обычные сочетания клавиш/щелчки мыши, которые вы используете для анализа ошибок компиляции. «
Попробуйте запустить приложение с помощью комбинации Ctrl + F5 .
В старых версиях по умолчанию будет использоваться консольная подсистема, даже если вы выбрали «пустой проект», но не в 2010 году, поэтому вам нужно установить его вручную. Для этого выберите проект в проводнике решений справа или слева (возможно, он уже выбран, поэтому вам не нужно беспокоиться об этом). Затем выберите «проект» из выпадающего меню панели меню, затем выберите «свойства проекта» > «свойства конфигурации» > «линкер» > «система» и установите первое свойство, выпадающее свойство «подсистемы» на «консоль» (/SUBSYSTEM: CONSOLE)». Окно консоли должно оставаться открытым после выполнения, как обычно.
Задайте точку останова на последней строке кода.
Для меня работает следующее: -)
Вот еще одна причина, по которой консоль может исчезнуть. И решение:
С новой версией Visual Studio 2010 вы можете увидеть это поведение, даже если вы используете Ctrl + F5 aka «начать без отладки». Это, скорее всего, потому, что вы создали «пустой проект» вместо «консольного приложения Win32». Если вы создаете проект как «консольное приложение Win32», вы можете игнорировать его, поскольку он не применяется.
В старых версиях он по умолчанию будет использовать консольную подсистему, даже если вы выбрали «пустой проект», но не в Visual Studio 2010, поэтому вам нужно установить его вручную. Для этого выберите проект в проводнике решений справа или слева (возможно, он уже выбран, поэтому вам не нужно беспокоиться об этом).
Затем выберите «проект» в выпадающем меню панели меню, затем выберите «свойства проекта_имя» → «свойства конфигурации» → «линкер» → «система» и установите первое свойство, выпадающее свойство «подсистемы» на «консоль (/SUBSYSTEM: CONSOLE)». Окно консоли должно оставаться открытым после выполнения, как обычно.