Поделиться через


Запуск, приостановка и остановка отладчика Visual Studio, а также навигация по отладчику

Содержание раздела

Содержание раздела

При запуске отладки

  • Вложение в процесс

  • Запустите приложение в отладчике автоматически

Перейдите в сеансе отладки кода

  • Приостанавливать выполнение кода с помощью точки останова или разбейте все

  • Пошаговое выполнение, в или из кода

  • Запустите в указанное место или функции

  • Добавьте следующую оператора для выполнения

  • Ограничить установки скорости для в режим " Только мой код ".

  • Шаг с заходом системные вызовы

  • Шаг с заходом свойства и операторы в управляемом коде

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

При запуске отладки

Когда решение открыто Visual Studio, имеется 3 вариантов, чтобы начать отладку.

Выберите Отладка, Начать отладку (клавиатуры: F5).

Запустится приложение и затем не будут работать, пока:

  • Отладчик достигается точка останова.

  • Выбрать Остановить отладку в меню Отладка.

  • Исключение.

  • Выходы приложения.

Выберите Отладка, Шаг с заходом (клавиатуры: F11), Шаг с обходом (или Отладка клавиатуры: F10).

Приложение запустится и затем прерывание первая линия.

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

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

y740d9d3.collapse_all(ru-ru,VS.110).gifВложение в процесс

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

Вложение в процесс, выполняющийся на локальном компьютере

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

Диалоговое окно "Присоединение к процессу"

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

y740d9d3.collapse_all(ru-ru,VS.110).gifЗапустите приложение в отладчике автоматически

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

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

  2. Перейдите в папку HKEY_LOCAL_MACHINE \ программное обеспечение \ Microsoft \ Windows \ NT CurrentVersion \ параметры выполнения файла изображения.

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

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

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

  5. Измените имя нового значения New Value в значение отладчик.

  6. В контекстном меню записи отладчика, выберите Изменить.

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

    Диалоговое окно редактирования строки

Запись автоматического запуска отладчика в regedit.exe

Содержание раздела

Перейдите в сеансе отладки кода

y740d9d3.collapse_all(ru-ru,VS.110).gifПриостанавливать выполнение кода с помощью точки останова или разбейте все

При отладке приложения с помощью отладчика Visual Studio, приложение либо выполняться, либо находиться в режиме приостановки выполнения.

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

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

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

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

Установите точки останова в коде

Для задания простой точки останова в коде откройте файл источника в редакторе Visual Studio.Поместите курсор в строку кода, для которой требуется прервать выполнение на и выберите пункт Точка останова, Вставить точку останова в контекстном меню (клавиатуре: F9.Отладчик приостанавливает выполнение непосредственно перед линия выполняется.

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

Точки останова в Visual Studio предоставляют широкий набор дополнительные функции, такие как условные точки останова и трассировки.Дополнительные сведения см. в разделе Использование точек останова и точек трассировки.

Вручную приостанавливать выполнение кода

Чтобы переключиться в следующую доступную строку кода в приложении на выполнение, выберите Отладка, Прервать все (клавиатуры: Ctrl+Alt+Break).

  • При отладке с включенным параметром " Только мой код ", следует выполнить в следующей строке кода в проекте.Дополнительные сведения см. в разделе Restrict stepping to Just My Code.

  • При отладке нескольких программ команда Приостановить все или точка останова по умолчанию влияет на выполнение всех отлаживаемых программ.См. раздел Change the break behavior of multiple processes в этом разделе.

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

    Если не удается получить доступ вспомогательные файлы, по-прежнему можно отлаживать инструкции по монтажу окна Дизассемблированный код "

y740d9d3.collapse_all(ru-ru,VS.110).gifПошаговое выполнение, в или из кода

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

Команда меню

Сочетание клавиш

Описание

Шаг с заходом

F11

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

Шаг с обходом

F10

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

Шаг с выходом

Shift+F11

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

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

  • Отладчик осуществляет пошаговое фактически через выписки кода, а не физические линии.Например, предложение if можно записать в одной линии:

    int x = 42;
    string s = "Not answered";
    if( int x == 42) s = "Answered!";
    
    Dim x As Integet = 42
    Dim s As String = "Not answered"
    If x = 42 Then s = "Answered!"
    

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

y740d9d3.collapse_all(ru-ru,VS.110).gifЗапустите в указанное место или функции

Иногда может потребоваться выполнение до определенного места в коде, а затем останавливаете выполнения.При наличии установить точку останова в место, где требуется приостановить выполнение, выберите Отладка, Начать отладку, если не запущены отладки, или Отладка, Продолжить.В обоих случаях ( F5 ) сочетание клавиш.Отладчик останавливается в точке останова в следующем выполнении кода.Выберите Отладка, Продолжить, пока не будет достигнута точка останова, который требуется.См. раздел Set breakpoints in the code в этом разделе.

Также можно запустить в, где установлен курсор в редакторе кода или приводят к заданной функции.

Запустите в позицию курсора

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

Выполните на функции в стеке вызовов

В окне Стек вызовов выберите функцию и выберите пункт Выполнить до текущей позиции из контекстного меню.

Выполните на функцию, определенную по имени

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

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

Диалоговое окно “Создать точку останова”

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

Диалоговое окно "Выбор точек останова"

y740d9d3.collapse_all(ru-ru,VS.110).gifДобавьте следующую оператора для выполнения

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

Example2

Установка следующей оператора для выполнения используйте одну из следующих процедур:

  • В поле источника, перетащите желтая стрелка в расположение, где нужно задать следующей оператора в одном файле источника

  • В поле источника, поместите курсор на линии, что требуется выполнить, и выберите пункт Задать следующий оператор в контекстном меню.

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

Предупреждающее замечаниеВнимание

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

  • Инструкции между старой и новой точками не выполняются.

  • При перемещении точки выполнения обратно, промежуточные инструкции не отменяются.

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

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

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

ПримечаниеПримечание

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

  • Следующий оператор находится в методе, отличном от метода текущего оператора.

  • Отладка была запущена через JIT–отладку.

  • Выполняется очистка стека вызова.

  • Вызвано исключение System.StackOverflowException или System.Threading.ThreadAbortException.

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

y740d9d3.collapse_all(ru-ru,VS.110).gifОграничить установки скорости для в режим " Только мой код ".

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

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

Делает код пользователя из кода без пользователя, режим " Только мой код " вид, что файлы символов (PDB) и оптимизации программы.

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

Чтобы просмотреть весь код и остановка на всех точках останова, можно отключить режим " Только мой код " отладки с помощью диалогового окна Параметры.

Три атрибута влияют на то, что отладчик считает "моим кодом": DebuggerNonUserCodeAttribute говорит отладчику, что применяемый код не является "моим кодом".DebuggerHiddenAttribute скрывает код от отладчика, даже если режим "Только мой код" включен.DebuggerStepThroughAttribute указывает отладчику выполнить в пошаговом режим код, к которому он применяется, а не осуществлять шаг с заходом в этот код.

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

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

ПримечаниеПримечание

Режим "Только мой код" не поддерживается для проектов устройств.

y740d9d3.collapse_all(ru-ru,VS.110).gifШаг с заходом системные вызовы

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

Чтобы получить сведения о том, как отключить режим " Только мой код " см. в разделе Restrict stepping to Just My Code.

Для доступа к файлам символов корпорации Майкрософт см. в разделе Использование Windows и других символов Майкрософт в разделе Поиск файлов символов (.pdb), исходного кода и двоичных файлов.

Чтобы загрузить символы для определенного элемента системы во время отладки.

  1. Открытие окна " модули " (клавиатуры: Ctrl+Alt+U).

  2. Выделите модуль, который необходимо загрузить символы для.

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

  3. В контекстном меню выберите команду Загрузить символы.

y740d9d3.collapse_all(ru-ru,VS.110).gifШаг с заходом свойства и операторы в управляемом коде

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

Содержание раздела

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

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

Остановите отладку из Visual Studio

Выберите Отладка, Остановить отладку.

Остановить отладку завершает процесс отладки, если программа запущена из Visual Studio.Если вложили в процесс, а не запускать его из Visual Studio, то процесс продолжает работу.

Остановка и повторный запуск отладки

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

Закройте приложение, отладка

Если оставить приложение, отладки, отладка останавливается автоматически.