No Image

Как запустить отладку в visual studio

СОДЕРЖАНИЕ
538 просмотров
16 декабря 2019

Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.

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

Настройка поведения выполнения нескольких процессов

Поиск исходных файлов и файлов символов (.pdb)

Запуск нескольких процессов в решении VS, присоединение к процессу, автоматический запуск процесса в отладчике

Переключение процессов, приостановка и продолжение выполнения, пошаговое выполнение исходного кода

Остановка отладки, окончание или отсоединение от процессов

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

В меню Отладка выберите Параметры и настройки.

На странице Отладка, Общие снимите флажок Прерывать все процессы при прерывании одного.

Описание

Для отображения и пошагового выполнения исходного кода процесса отладчику требуется доступ к исходным файлам и файлам символов процесса. Подробнее см. раздел Указание файлов символов (.pdb) и файлов с исходным кодом.

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

Описание

  • Запуск отладки нескольких процессов в решении Visual Studio • Смена запускаемого проекта • Запуск конкретного проекта в решении • Запуск нескольких проектов в решении • Присоединение к процессу • Автоматический запуск процесса в отладчике
Примечание

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

Присоединитесь к дочернему процессу после того, как он запущен.

Настройте параметры Windows таким образом, что дочерний процесс автоматически запускался в новом экземпляре отладчика.

Запуск отладки нескольких процессов в решении Visual Studio

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

Смена запускаемого проекта

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

Запуск конкретного проекта в решении

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

Запуск нескольких процессов в решении VS, присоединение к процессу, автоматический запуск процесса в отладчике

Описание

Запуск нескольких проектов в решении

В Обозревателе решений выберите решение, затем в контекстном меню выберите Свойства.

Выберите Общие свойства, Запускаемый проект в диалоговом окне Свойства.

Для каждого проекта, который необходимо изменить, выберите Запустить, Запуск без отладки или Нет.

Запуск нескольких процессов в решении VS, присоединение к процессу, автоматический запуск процесса в отладчике

Описание

Присоединение к процессу

Отладчик может также присоединяться к программам, выполняемым в процессах вне Visual Studio, включая программы, которые работают на удаленном устройстве. После присоединения к программе можно использовать команды отладчика, проверять состояние программы и выполнять другие действия. Возможности проверки программы могут быть ограничены в зависимости от того, была ли программа собрана с отладочной информацией, имеется ли доступ к исходному коду программы, а также отслеживает ли JIT-компилятор среды CLR отладочную информацию.

Присоединение к процессу, выполняющемуся на локальном компьютере

Выберите Отладка, Присоединиться к процессу. В диалоговом окне Присоединение к процессу выделите процесс в списке Доступные процессы и нажмите кнопку Присоединиться.

Описание

Автоматический запуск процесса в отладчике

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

Запустите Редактор реестра (regedit.exe).

Перейдите к папке HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionImage File Execution Options.

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

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

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

Поменяйте имя нового значения с New Value на debugger .

В контекстном меню записи "debugger" выберите Изменить.

В диалоговом окне изменения строкового параметра введите vsjitdebugger.exe в поле Значение.

Описание

  • Переключение между процессами • Команды прерывания, пошагового выполнения и продолжения выполнения

Переключение между процессами

Во время отладки можно подключиться к нескольким процессам, но в любой момент времени только один из них будет активным в отладчике. Активный или текущий процесс можно выбрать с помощью панели инструментов "Место отладки" или в окне Процессы. Для переключения между процессами оба процесса должны находиться в режиме приостановки выполнения.

Установка текущего процесса

На панели инструментов "Место отладки" выберите Процесс, чтобы отобразить список Процесс. Выберите процесс, который требуется установить в качестве текущего процесса.

Если панель инструментов Место отладки не отображается, выберите Сервис, Настроить. На вкладке Панели инструментов выберите Место отладки.

Откройте окно Процессы (сочетание клавиш: Ctrl+Alt+Z), чтобы найти процесс, который необходимо сделать текущим процессом, и дважды щелкните его.

Текущий процесс будет отмечен желтой стрелкой.

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

Переключение процессов, приостановка и продолжение выполнения, пошаговое выполнение исходного кода

Описание

Команды прерывания, пошагового выполнения и продолжения выполнения

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

Примечание
Команда Прерывать все процессы при прерывании одного

Флажок установлен (по умолчанию)

Прерывать все процессы при прерывании одного

Флажок снят

Меню Отладка:

Прервать все

Все процессы приостанавливаются. Все процессы приостанавливаются.
Меню Отладка:

Continue

Все процессы возобновляются. Все приостановленные процессы возобновляются.
Меню Отладка:

Шаг с заходом
Шаг с обходом
Шаг с выходом

Во время выполнения шага текущего процесса все процессы выполняются.

Затем все процессы приостанавливаются.

Текущий процесс выполняется пошагово.

Приостановленные процессы возобновляются.

Выполняемые процессы продолжают выполняться.

Меню Отладка:

Шаг с заходом (только текущий процесс)
Шаг с обходом (только текущий процесс)
Шаг с выходом (только текущий процесс)

Недоступно Текущий процесс выполняется пошагово.

Остальные процессы сохраняют свое текущее состояние (остаются приостановленными или продолжают выполняться).

Окна исходного кода.

Точка останова

Все процессы приостанавливаются. Приостанавливается только процесс окна исходного кода.
Контекстное меню окна исходного кода:

Выполнить до текущей позиции

Окно исходного кода должно находиться в текущем процессе.

Все процессы выполняются, а процесс в окне исходного кода выполняется до курсора и приостанавливается.

После этого приостанавливаются все остальные процессы.

Процесс в окне исходного кода выполняется до курсора.

Остальные процессы сохраняют свое текущее состояние (остаются приостановленными или продолжают выполняться).

Контекстное меню окна Процессы:

Остановить процесс

Недоступно Выбранный процесс приостанавливается.

Остальные процессы сохраняют свое текущее состояние (остаются приостановленными или продолжают выполняться).

Контекстное меню окна Процессы:

Продолжить процесс

Недоступно Выбранный процесс возобновляется.

Остальные процессы сохраняют свое текущее состояние (остаются приостановленными или продолжают выполняться).

Переключение процессов, приостановка и продолжение выполнения, пошаговое выполнение исходного кода

Описание

  • Команды остановки, окончания и отсоединения

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

Если текущий процесс был запущен в отладчике, этот процесс завершается.

Если отладчик был присоединен к текущему процессу, отладчик отсоединяется от процесса, не прекращая его выполнение.

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

Примечание

Параметр Прерывать все процессы при прерывании одного не влияет на поведение остановки отладки, завершения процессов и отсоединения от процессов.

Изменение влияния команды "Остановить отладку" на отдельный процесс

  • Откройте окно Процессы (сочетание клавиш: Ctrl+Alt+Z). Выберите процесс и установите либо снимите флажок Отсоединиться при остановке отладки.

Команды остановки, окончания и отсоединения

Команда Описание
Меню Отладка:

Остановить отладку

Если поведение не изменено параметром Отсоединиться при остановке отладки окна Процессы:

1. Процессы, запущенные отладчиком, завершаются.
2. Присоединенные процессы отсоединяются от отладчика.

Меню Отладка:

Завершить все

Все процессы завершаются. Меню Отладка:

Отсоединить все

Отладчик отсоединяется от всех процессов. Контекстное меню окна Процессы:

Отсоединить процесс

Отладчик отсоединяется от выбранного процесса.

Остальные процессы сохраняют свое текущее состояние (остаются приостановленными или продолжают выполняться).

Контекстное меню окна Процессы:

Завершить процесс

Выбранный процесс завершается.

Остальные процессы сохраняют свое текущее состояние (остаются приостановленными или продолжают выполняться).

Контекстное меню окна Процессы:

Отсоединиться при остановке отладки

Переключает поведение команды Отладка, Остановить отладку для выбранного процесса:

— Флажок установлен: отладчик отсоединяется от процесса.
— Флажок снят: процесс завершается.

Остановка отладки, окончание или отсоединение от процессов

Описание

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы познакомились с ключевыми словами ref и out в C#. В данной статье я бы хотел немного поговорить про отладку кода в Visual Studio.

В состав Visual Studio входит мощный отладчик, который позволяет расставлять точки остановки ( breakpoints ), запускать программу под этим отладчиком, пошагово её отлаживать. Пошагово можно отлаживать каждый оператор, можно отлаживать, входя в какой-то метод или не входя в метод. В любой момент можно посмотреть значение локальной переменной, вычислить какое-нибудь выражение. Можно посмотреть стек вызовов. Давайте на каком-нибудь примере разберем, как отлаживать код в Visual Studio :

Давайте поставим точку остановки. Это можно сделать двумя путями. Нажать клавишу "F9" , и на той строке, на которой находится курсор, будет точка остановки. Также можно нажать слева от строки на помеченную область:

Теперь можно запустить программу, и на брейкпойнте она остановится. Но остановка произойдёт только в том случае, если вы запустили программу под отладчиком. Самый простой способ запустить программу под отладчиком – это нажать клавишу F5 , а не Ctrl + F5 . Можно также через контекстное меню Debug :

Когда программа дойдёт до брейкпойнта, то её выполнение приостановится. Точка, на которой сейчас происходит выполнение программы, выделяется желтым цветом:

Пока программа приостановлена, можно посмотреть значение переменных. В Autos заносятся переменные автоматически, в Locals находятся локальные переменные, в Watch можно самим что-нибудь набрать (я набрал i*3 и i*5 ) и посмотреть результаты:

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

Домашнее задание: попробуйте написать программу, которая будет вычислять факториал числа и отладить её.

В данной небольшой статье вы узнали как просто можно отлаживать код в Visual Studio

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.

Наш добрый друг Pic4a, составил для тебя подробный tutorial по отладке в Visual Studio. Enjoy!

Отладка – неотъемлемый этап цикла разработки приложений, зачастую более важный, чем написание кода. Именно отладка позволяет устранить проблемные места в коде, которые приводят к разного рода ошибкам. В этой статье речь пойдет о том, как отлаживать приложения в среде Visual Studio и какие механизмы её облегчают. Предполагается, что читатель в общих чертах уже знаком что из себя представляет процесс отладки. Все примеры воспроизведены в Visual Studio 2008, но актуальны для любой версии.

Точки останова

Любой алгоритм выполняется последовательно, одна инструкция за другой. Точка остановки позволяет приостановить выполнение кода на определенной инструкции. Это необходимо, чтобы начать отладку с предположительно проблемного участка. Например, при модульной структуре проекта проблемы начались при подключении нового модуля. Незачем отлаживать весь проект, когда можно отладить только модуль. Точки остановки сильно облегчают процесс в этом случае. Для того, чтобы установить точку остановки необходимо кликнуть на небольшую область, выделенную как правило особым цветом, в левой части редактора кода. Также это можно сделать, установив каретку на нужную строку и нажав F9.

При установке точки останова в окне редактора кода будет выведена иконка напротив строки кода.

Клик левой кнопкой мыши по иконке приведет к удалению точки остановки, а для управления необходимо открыть контекстное меню (клик правой кнопкой).

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

Работа с выводом отладчика

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

Посмотреть вывод всей возможной информации можно во вкладке Debug->Window.

Breakpoints – информация обо всех точках остановки в отлаживаемом проекте.

Output – окно вывода Visual Studio. Используется для вывода служебных сообщений при работе со средой.

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

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

Locals – вывод локальных переменных и их значений.

Immediate – поиск и вывод значения переменной по символьному представлению. В отличие от Watch, не хранит список значений, а выводит значение по требованию.

Call Stack – стек вызовов. Показывает последовательность вызовов функций для отлаживаемого модуля до точки остановки.

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

Modules – список загруженных модулей, необходимых для работы отлаживаемого (которые он подгружает для работы).

Processes – список процессов отлаживаемого модуля.

Memory – просмотр памяти отлаживаемого модуля в традиционном для любого hex-редактора виде.

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

Registers – вывод значений в регистрах

Что следует знать при работе c выводом отладчика

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

Окно Watch поддерживает так называемые псевдопеременные. Своего рода макросы для определенных значений. Например, для вывода результата GetLastError после каждой строчки кода. Подробнее об этом можно прочитать здесь. Также Watch выполняет арифметические операции с переменными, а для managed-кода может выполнять код.

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

Для того чтобы начать процесс отладки, необходимо поставить точку остановки в нужном месте и запустить модуль. Отладка станет доступна по достижению точки остановки. Также можно принудительно остановить выполнение модуля, в таком случае курсор автоматически переместится на код, который выполнялся до остановки. Но точка остановки при этом не установится.
Во время отладки в панели инструментов Visual Studio доступен Debug Toolbar. Если его нет, включить его можно, отметив элемент меню Debug во вкладке View->Toolbars.

Все кнопки в панели инструментов повторяют вкладку Debug, нас в данный момент интересует навигация по отлаживаемому коду. В качестве примера рассмотрим следующую ситуацию:

шаг со входом. (f11) Если отладка остановилась на вызове функции, шаг со входом необходим для того, чтобы остановить выполнение модуля внутри тела функции. Т.е. если внутри функции нет точки остановки, можно продолжить пошаговое выполнение, выполнив шаг со входом. Обратите внимание, в данном примере шаг со входом остановит выполнение программы внутри функции get_message, а не hello, т.к. сначала выполняется она. Т.е. шаг со входом в данном случае остановит выполнение модуля на строке 5.

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

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

Во время пошаговой отладки важно также знать, что курсор можно передвинуть на необходимую строчку кода (Drag&Drop). Т.е. при желании заново отладить алгоритм не нужно перезапускать процесс отладки. Правда следует понимать, что в этом случае ожидаемое поведение программы не гарантировано. Разработчик должен отдавать отчет своим действиям. Например, в случае ниже программист получит ошибку, если передвинет курсор на строку 9, т.к. память для с еще не была выделена.

Заключение

Процесс отладки в Visual Studio является одним из самых простых, если сравнивать с другими IDE. В статье были рассмотрены общие средства отладки для различных технологий. Тем не менее, в зависимости от типа проекта, средства для отладки могут дополняться. Например, при отладке GPU-кода. Да и возможности по отладке пошли далеко вперед после Visual Studio 2008 в сторону упрощения. Быть в курсе последних событий поможет тематический раздел в MSDN.

Комментировать
538 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев