Прочитать на английском

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


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

Отладчик Visual Studio можно подключить к запущенному процессу на локальном или удаленном компьютере. После выполнения процесса выберите Отладка>Подключить к процессу или нажмите клавишиCTRL+ALT+P в Visual Studio и используйте диалоговое окно Подключение к процессу, чтобы подключить отладчик к процессу.

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

Совет

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

Присоединение к запущенному процессу на локальном компьютере

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

Начиная с Visual Studio 2022 версии 17.10 Preview 2 диалоговое окно "Присоединение к процессу" изменилось. Если вам нужны инструкции, соответствующие более старым диалоговым окнам, перейдите в представление Visual Studio 2019 (селектор версий в верхней левой части статьи).

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

  1. В Visual Studio выберите Отладка>Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.

  2. Задайте для типаПодключение ion значение Local.

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

    Снимок экрана: диалоговое окно

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

    • Чтобы быстро выбрать процесс, введите его имя или первую букву в поле Фильтр процессов.
    • Если вы не знаете имя процесса, просмотрите список или обратитесь к разделу Общие сценарии отладки, чтобы ознакомиться с некоторыми распространенными именами процессов.
    • Нажмите кнопку "Отслеживать окно ", чтобы включить выбор окна на компьютере, которое задает процесс.

    Совет

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

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

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

  5. Выберите Вложить.

Совет

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

  1. В Visual Studio выберите Отладка>Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.

  2. Проверьте значение параметра Тип подключения.

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

  3. В поле Цель подключения укажите имя локального компьютера.

    Снимок экрана: диалоговое окно

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

    • Чтобы быстро выбрать процесс, введите его имя или первую букву в поле Фильтр процессов.

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

    Совет

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

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

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

    Выбор кода вручную

    1. Щелкните Выбрать.
    2. В диалоговом окне Выбор типа кода нажмите кнопку Выполнять отладку кода следующих типов. Если при попытке подключиться к процессу из списка возникает ошибка, можно воспользоваться диалоговым окном Выбор типа кода, чтобы устранить неполадку.
    3. Выберите типы кода, которые необходимо отладить.
    4. Нажмите ОК.
  6. Выберите Вложить.

Примечание

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

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

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

Начиная с Visual Studio 2022 версии 17.10 Preview 2 диалоговое окно "Присоединение к процессу" изменилось. Если вам нужны инструкции, соответствующие более старым диалоговым окнам, перейдите в представление Visual Studio 2019 (селектор версий в верхней левой части статьи).

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

  1. В Visual Studio выберите Отладка>Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.

  2. Задайте тип Подключение ion для типа удаленного подключения, например Remote (Windows).

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

    Появится параметр целевого объекта Подключение ion.

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

    • Щелкните стрелку раскрывающегося списка рядом с целевым объектом Подключение ion и выберите имя компьютера в раскрывающемся списке.
    • Введите имя компьютера в поле Целевой объект подключения и нажмите клавишу ВВОД.
    • Нажмите кнопку Найти рядом с полем Целевой объект подключения, чтобы открыть диалоговое окно Удаленные подключения. В диалоговом окне Удаленные подключения перечислены все устройства, которые имеются в локальной подсети или которые напрямую подключены к компьютеру. Для обнаружения удаленных устройств может потребоваться открыть исходящий порт UDP 3702 на сервере. Выберите нужный компьютер или устройство, а затем закройте диалоговое окно.

    Убедитесь, что Visual Studio добавляет требуемый порт в имя компьютера, которое отображается в формате: <имя удаленного компьютера>:порт

    Примечание

    Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4026). 4026 — это порт по умолчанию для удаленного отладчика Visual Studio 2022. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.

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

  4. Нажмите кнопку Обновить, чтобы заполнить список Доступные процессы.

    Совет

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

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

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

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

  7. Выберите Вложить.

  1. В Visual Studio выберите Отладка>Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.

  2. Проверьте значение параметра Тип подключения.

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

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

    • Щелкните стрелку раскрывающегося списка рядом с целевым объектом Подключение ion и выберите имя компьютера в раскрывающемся списке.
    • Введите имя компьютера в поле Целевой объект подключения и нажмите клавишу ВВОД.
    • Нажмите кнопку Найти рядом с полем Целевой объект подключения, чтобы открыть диалоговое окно Удаленные подключения. В диалоговом окне Удаленные подключения перечислены все устройства, которые имеются в локальной подсети или которые напрямую подключены к компьютеру. Для обнаружения удаленных устройств может потребоваться открыть исходящий порт UDP 3702 на сервере. Выберите нужный компьютер или устройство, после чего нажмите Выбрать.

    Убедитесь, что Visual Studio добавляет требуемый порт в имя компьютера, которое отображается в формате: <имя удаленного компьютера>:порт

    Примечание

    Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022). 4024 — это порт по умолчанию для удаленного отладчика Visual Studio 2019. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.

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

  4. Нажмите кнопку Обновить, чтобы заполнить список Доступные процессы.

    Совет

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

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

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

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

    Выбор кода вручную

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

Примечание

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

В некоторых случаях при отладке в сеансе удаленного рабочего стола (службы терминалов) в списке Доступные процессы не отображаются все доступные процессы. При работе с Visual Studio в качестве пользователя с ограниченным доступом в списке Доступные процессы не будут отображаться процессы, запущенные в сеансе 0, который используется для служб и других серверных процессов, включая w3wp.exe. Эту проблему можно решить, выполнив Visual Studio под учетной записью администратора или запустив Visual Studio из консоли сервера вместо сеанса удаленного рабочего стола.

Если ни один из этих обходных путей использовать невозможно, третий вариант — присоединение к процессу путем запуска vsjitdebugger.exe -p <ProcessId> из командной строки Windows. Можно определить идентификатор процесса с помощью tlist.exe. Чтобы получить файл tlist.exe, скачайте и установите средства отладки для Windows, которые доступны на странице скачиваемых файлов WDK и WinDbg.

Подключение к процессу .NET Core, выполняемому в Службе приложений Azure (Windows)

Если вы публикуете службу приложение Azure (Windows), см. инструкции по удаленной отладке ASP.NET Core в Azure или службе отладки приложение Azure.

Подключение к процессу .NET Core, выполняемому в Службе приложений Azure (Windows)

Если вы выполняете публикацию в Службу приложений Azure (Windows), параметр Подключить отладчик можно найти в меню ... в разделе Размещение в профиле публикации. Visual Studio пытается подключить удаленный отладчик к экземпляру Службы приложений Azure (Windows), в котором публикуется профиль.

Снимок экрана: параметр

Подключение к процессу .NET Core под управлением Linux с помощью SSH

Дополнительные сведения см. в статье Удаленная отладка .NET Core в Linux с помощью SSH.

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

Начиная с Visual Studio 2019 можно подключить отладчик Visual Studio к процессу, выполняющемуся в контейнере Docker. Для контейнеров Docker в .NET Core для Linux см. раздел Присоединение к процессу, выполняющемуся в контейнере Docker для Linux. Для контейнеров Docker в Windows см. раздел Присоединение к процессу, выполняющемуся в контейнере Docker для Windows.

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

Чтобы быстро присоединиться к процессам, к которым вы ранее были присоединены, выберите Отладка>Повторно подключиться к процессу (SHIFT+ALT+P). При выборе этой команды отладчик сразу же попытается присоединиться к последним процессам, к которым вы подключались, сначала попытавшись выполнить сопоставление с ИД предыдущего процесса, а если это не удается, то путем сопоставления с именем предыдущего процесса. Если совпадений не найдено или несколько процессов имеют одно и то же имя, откроется диалоговое окно Подключение к процессу, в котором можно выбрать правильный процесс.

Примечание

Команда Повторно подключиться к процессу доступна начиная с Visual Studio 2017.

Распространенные сценарии отладки

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

Чтобы быстро выбрать выполняющийся процесс для подключения, в Visual Studio нажмите клавиши CTRL+ALT+P, а затем введите первую букву имени процесса.

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

Для отладки скриптов на стороне клиента в браузере должна быть включена отладка скриптов. Для отладки клиентского скрипта в Chrome выберите JavaScript или TypeScript в качестве типа кода, а в зависимости от типа приложения может потребоваться закрыть все экземпляры Chrome и запустить браузер в режиме отладки (введите chrome.exe --remote-debugging-port=9222 из командной строки).

Для отладки скриптов на стороне клиента в браузере должна быть включена отладка скриптов. Для отладки клиентского скрипта в Chrome выберите JavaScript (Chrome) или JavaScript (Microsoft Edge — Chromium) в качестве типа кода, и в зависимости от типа приложения может потребоваться закрыть все экземпляры Chrome и запустить браузер в режиме отладки (введите chrome.exe --remote-debugging-port=9222 из командной строки). В более ранних версиях Visual Studio в качестве отладчика скриптов для Chrome использовался Веб-пакет.

Сценарий Метод отладки Имя процесса Примечания и ссылки
ASP.NET Core — удаленная отладка на сервере IIS Используйте инструменты удаленной отладки и функцию Подключиться к процессу w3wp.exe или dotnet.exe Начиная с .NET Core 3 процесс w3wp.exe используется для модели размещения в приложении по умолчанию. Сведения о развертывании приложений см. в разделе Публикация в службах IIS. Дополнительные сведения см. в разделе Удаленная отладка ASP.NET Core на удаленном компьютере IIS
ASP.NET Core — отладка приложения на локальном компьютере после запуска приложения без отладчика Используйте функцию Подключиться к процессу appname.exe или iisexpress.exe Это может быть полезно для ускорения загрузки приложения, например (например, при профилировании). Процесс локального сервера (kestrel) по умолчанию для ASP.NET Core — appname.exe.
ASP.NET 4 или 4.5 — удаленная отладка на сервере IIS Используйте инструменты удаленной отладки и функцию Подключиться к процессу w3wp.exe См. раздел Удаленная отладка ASP.NET на удаленном компьютере IIS
Скрипт на стороне клиента — отладка на локальном сервере IIS для поддерживаемых типов приложений Используйте функцию Подключиться к процессу chrome.exe или msedge.exe Необходимо включить отладку скриптов. Для Chrome необходимо также запустить Chrome в режиме отладки (введите chrome.exe --remote-debugging-port=9222 из командной строки) и выбрать JavaScript или TypeScript в поле "Подключение".
Приложение C#, Visual Basic или C++ — отладка на локальном компьютере Используйте стандартную отладку (F5) или функцию Подключиться к процессу <appname>.exe В большинстве случаев используется стандартная отладка, а не функция Подключиться к процессу.
Классическое приложение Windows — удаленная отладка Инструменты удаленной отладки Н/П См. раздел Удаленная отладка приложения C# или Visual Basic или Удаленная отладка приложения C++
.NET Core в Linux — отладка Используйте функцию Подключиться к процессу dotnet.exe или уникальное имя процесса Сведения об использовании см. в статье Удаленная отладка .NET Core в Linux с помощью SSH. Для контейнерных приложений см. раздел Присоединение к процессу, выполняющемуся в контейнере Docker.
Контейнерное приложение — отладка Используйте функцию Подключиться к процессу dotnet.exe или уникальное имя процесса См. раздел Присоединение к процессу, выполняющемуся в контейнере Docker.
Python в Linux — удаленная отладка Используйте функцию Подключиться к процессу debugpy См. раздел Удаленное подключение с помощью инструментов Python.
Другие поддерживаемые типы приложений — отладка в серверном процессе Если сервер удаленный, используйте инструменты удаленной отладки и функцию Подключиться к процессу chrome.exe, msedge.exe или другие процессы При необходимости используйте монитор ресурсов, чтобы определить процесс. См. раздел Удаленная отладка.
приложение универсальная платформа Windows (UWP), OneCore, HoloLens или приложение Интернета вещей — удаленная отладка Отладка установленного пакета приложения Н/П См. раздел Отладка установленного пакета приложения вместо использования функции Подключиться к процессу
Приложение UWP, OneCore, HoloLens или IoT — отладка приложения, которое вы не начали с Visual Studio Отладка установленного пакета приложения Н/П См. раздел Отладка установленного пакета приложения вместо использования функции Подключиться к процессу

Использование функций отладчика

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

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

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

Устранение ошибок присоединения

В некоторых сценариях отладчик может помочь правильно определить тип кода для отладки. Если значения подключения заданы правильно (можно просмотреть правильный процесс в списке доступных процессов ), но отладчик не может присоединиться, попробуйте выбрать наиболее подходящий отладчик в списке типов кода, который может потребоваться, например, при отладке приложения Linux или Python.

В некоторых сценариях отладчик может помочь правильно определить тип кода для отладки. Если значения подключения заданы правильно (можно просмотреть правильный процесс в списке доступных процессов), но отладчик не может присоединиться, попробуйте выбрать наиболее подходящий тип подключения в списке типов Подключение ion, которые могут потребоваться, например при отладке приложения Linux или Python. Если используется тип подключения "По умолчанию", можно также выбрать определенный тип кода для подключения, как описано далее в этом разделе.

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

Иногда отладчик может успешно присоединяться к одному типу кода, но не к другому. Это происходит в следующих случаях:

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

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

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

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

Получение конкретных сведений о том, почему не удалось подключить тип кода

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

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

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

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

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

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

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

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

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

    2. Выберите Выбрать.

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

    4. Нажмите ОК.

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

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