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


Отладка одного или нескольких процессов в Visual Studio

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

Описание

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

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

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

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

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

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

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

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

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

К началуСодержание

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

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

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

К началуСодержание

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

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

Примечание

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

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

    -или-

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

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

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

Изменение типа запуска для проекта

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

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

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

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

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

К началуСодержание

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

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

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

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

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

К началуСодержание

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

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

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

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

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

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

К началуСодержание

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

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

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

  2. Перейдите к папке HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.

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

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

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

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

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

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

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

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

К началуСодержание

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

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

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

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

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

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

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

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

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

    Процессы - окно

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

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

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

К началуСодержание

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

Примечание

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

Команда

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

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

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

Флажок снят

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

  • Прервать все

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

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

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

  • Continue

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

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

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

  • Шаг с заходом

  • Шаг с обходом

  • Шаг с выходом

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

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

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

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

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

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

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

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

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

Недоступно

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

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

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

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

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

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

Контекстное меню окна исходного кода:

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

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

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

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

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

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

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

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

Недоступно

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

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

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

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

Недоступно

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

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

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

К началуСодержание

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

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

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

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

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

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

Примечание

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

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

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

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

Команда

Описание

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

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

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

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

  2. Присоединенные процессы отсоединяются от отладчика.

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

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

Все процессы завершаются.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Флажок снят: процесс завершается.

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

К началуСодержание

См. также

Основные понятия

Запуск, приостановка, шаг, последовательное выполнение и остановка отладки в Visual Studio

JIT-отладка в Visual Studio

Другие ресурсы

Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio

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

Отладка многопоточных приложений в Visual Studio