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

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

Сообщество, где люди делятся уникальным опытом

Вопросы и ответы по любой теме от IT сообщества

Помогаем строить карьеру в IT-индустрии

Биржа удаленной работы для IT-специалистов

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Опубликовано: Октябрь 2016

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

Присоединение к процессу отладчик Visual Studio часто используется приложение еще не запущено из Visual Studio, когда необходимо выполнить его отладку. Например можно присоединить к процессу IIS или службы Windows, на котором размещается приложение .NET. Процесс присоединения к может быть локальным или удаленным. Другой пример — Если приложение без отладчика выполняется и возникает исключение, может затем присоединяется к процессу выполнения приложения, чтобы начать отладку.

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

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

Сценарий Отладка метода Имя процесса Обратите внимание и ссылки
Отладка любого типа поддерживаемого приложения на локальном компьютере, запустив его из Visual Studio Стандартная отладку F5 Н/Д В разделе Приступая к работе с отладчиком
Удаленная отладка ASP.NET 4 или 4.5 на сервере IIS Использовать средства удаленного управления и присоединить к процессу w3wp.exe В разделе удаленной отладки ASP.NET на удаленном компьютере IIS
Удаленная отладка ASP.NET Core на сервере IIS Использовать средства удаленного управления и присоединить к процессу dnx.exe Развертывание приложения в разделе Опубликовать в IIS. Для отладки см удаленной отладки ASP.NET на удаленном компьютере IIS
Другие типы поддерживаемых приложений на серверный процесс отладки Использовать средства удаленного управления (если сервер является удаленным) и присоединение к процессу Iexplore.exe или других процессов При необходимости используйте диспетчер задач для определения процесса. В разделе удаленной отладки и последующих подразделах этого раздела
Удаленная отладка классического приложения Windows Инструменты удаленной отладки и F5 Н/Д В разделе удаленной отладки
Удаленная отладки универсальной Windows (UWP), OneCore, HoloLens или IoT приложения Отладка установленного приложения пакета Н/Д Используйте отладки или другие отладки целевых объектов и отладки пакета установки приложения вместо присоединиться к процессу
Отладка приложения универсальной Windows (UWP), OneCore, HoloLens или IoT, вы не запускали из Visual Studio Отладка установленного приложения пакета Н/Д Используйте отладки или другие отладки целевых объектов и отладки пакета установки приложения вместо присоединиться к процессу
Предупреждение

Для присоединения к универсальному приложению Windows, которое написано на JavaScript, сначала необходимо включить отладку для приложения. См. раздел Attach the debugger в Центре разработчика Windows.

Чтобы отладчик мог присоединиться к коду на языке C++, код должен предоставлять DebuggableAttribute . Это можно добавить в код автоматически, путем связывания с параметром /ASSEMBLYDEBUG компоновщика.

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

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

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

Для классических приложений Windows можно также отлаживать выполняющегося приложения с помощью отладчика JIT-Компилятора (Visual Studio откроется и приостановка выполнения кода приложения после возникновения ошибки).

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

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

Чтобы выбрать удаленный компьютер:

В Visual Studio выберите пункт Отладка > Присоединить к процессу.

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

Параметр Транспорт хранится между сеансами отладки.

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

Введите имя в списке Квалификатор .

Примечание Если позднее, не удается подключиться с помощью имени удаленного компьютера, используйте IP-адрес. (Номер порта может отображаться автоматически после выбора процесса. Можно также ввести его вручную. На следующем рисунке 4020 — это порт по умолчанию для удаленного отладчика.)

Щелкните стрелку раскрывающегося списка Квалификатор и выберите из раскрывающегося списка имя компьютера.

Нажмите кнопку Поиск рядом со спискомКвалификатор , чтобы открыть диалоговое окно Выбор подключения к удаленному отладчику . В диалоговом окне Выбор подключения к удаленному отладчику будут перечислены все устройства, присутствующие в локальной подсети, а также устройства, непосредственно подключенные к компьютеру с помощью кабеля Ethernet (если таковые имеются). Щелкните нужный компьютер или устройство, после чего щелкните Выбрать.

Параметр Квалификатор хранится между сеансами отладки только в случае успешного подключения отладки с этим квалификатором.

Нажмите кнопку Обновить.

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

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

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

Нажмите кнопку Присоединить.

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

В Visual Studio выберите пункт Отладка > Присоединить к процессу.

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

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

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

В поле Присоединиться к щелкните Выбрать.

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

Нажмите кнопку ОК.

Нажмите кнопку Присоединить.

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

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

В некоторых случаях при отладке в сеансе удаленного рабочего стола (службы терминалов), список Доступные процессы не отображает все доступные процессы. При работе с Visual Studio в качестве пользователя с ограниченным доступом в списке Доступные процессы не будут отображаться процессы, запущенные в сеансе 0, который используется для служб и других серверных процессов, включая w3wp.exe. Можно устранить эту проблему, запустив Visual Studio под учетной записью администратора или запустив Visual Studio с консоли сервера вместо сеанса служб терминалов. Если ни один из этих обходных путей использовать невозможно, третий вариант — присоединение к процессу путем запуска vsjitdebugger.exe -p ProcessId из командной строки Windows. Можно определить идентификатор процесса с помощью Tlist.exe. Чтобы получить файл tlist.exe, скачайте и установите средства отладки для Windows, которые доступны на странице файлов загрузки WDK и WinDbg.

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

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

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

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

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

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

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

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

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

Нажмите кнопку Выбрать.

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

Нажмите кнопку ОК. Диалоговое окно Выбор типа кода будет закрыто.

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

На этот раз присоединение не пройдет полностью, и будет выдано сообщение о конкретной ошибке.

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

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

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

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

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

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

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

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

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

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

Описание

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

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

Описание

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

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

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

Настройте параметры 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. Присоединенные процессы отсоединяются от отладчика.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Описание

Ссылка на основную публикацию
Adblock detector