Присоединение к процессу visual studio что это
Отладка нескольких процессов (C#, Visual Basic, C++)
В Visual Studio можно выполнять отладку решения, имеющего несколько процессов. Можно запускать несколько процессов, переключаться между ними, прерывать и возобновлять их выполнение, пошагово проходить исходный код, останавливать отладку, завершать отдельные процессы или отсоединяться от них.
Запуск отладки с несколькими процессами
Если в решении Visual Studio могут независимо выполняться несколько проектов, можно выбрать проект, запускаемый отладчиком. Текущий запускаемый проект отображается полужирным шрифтом в обозревателе решений.
Чтобы изменить запускаемый проект, правой кнопкой мыши щелкните имя другого проекта в обозревателе решений и выберите Назначить запускаемым проектом.
Чтобы начать отладку проекта из обозревателя решений без его назначения запускаемым, щелкните проект правой кнопкой мыши и выберите Отладка > Запустить новый экземпляр или Шаг с заходом в новый экземпляр.
Назначение запускаемого проекта или нескольких проектов на странице свойств решения
Выберите решение в обозревателе решений и щелкните значок Свойства на панели инструментов либо щелкните это решение правой кнопкой мыши и выберите пункт Свойства.
На странице Свойства выберите Общие свойства > Запускаемый проект.
Выберите Текущий выбор, Один запускаемый проект и файл проекта либо выберите Несколько запускаемых проектов.
Если выбран параметр Несколько запускаемых проектов, можно изменить порядок запуска и действие для каждого проекта: Запустить, Запустить без отладки или Нет.
Нажмите Применить или OK, чтобы применить изменения и закрыть диалоговое окно.
Присоединение к процессу
Отладчик также может присоединяться к приложениям, выполняемым в процессах вне Visual Studio, включая процессы на удаленных устройствах. После присоединения к приложению можно использовать отладчик Visual Studio. Функции отладки могут быть ограничены. Это зависит от того, было ли приложение построено с отладочной информацией, есть ли у вас доступ к исходному коду приложения и отслеживает ли JIT-компилятор отладочную информацию.
Присоединение к выполняющемуся процессу:
После запуска приложения выберите Отладка > Присоединить к процессу.
В диалоговом окне Присоединение к процессу выделите процесс в списке Доступные процессы и щелкните Присоединить.
Отладчик не присоединяется автоматически к дочернему процессу, который запущен отлаживаемым процессом, даже если дочерний проект находится в том же решении. Чтобы выполнить отладку дочернего процесса, подключитесь к дочернему процессу после его запуска или настройте редактор реестра Windows для запуска дочернего процесса в новом экземпляре отладчика.
Использование редактора реестра для автоматического запуска процесса в отладчике
В некоторых случаях может потребоваться отладить код запуска для приложения, которое запускается другим процессом. К ним относятся службы и действия пользовательской настройки. Можно запустить отладчик и автоматически присоединить его к приложению.
Запустите редактор реестра Windows с помощью regedit.exe.
В редакторе реестра перейдите к параметрам выполнения файла HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image.
Выберите папку приложения, которое требуется запустить в отладчике.
Если приложение не указано в качестве дочерней папки, щелкните правой кнопкой мыши Параметры выполнения файла образа, выберите Создать > Раздел и введите имя приложения. Или щелкните правой кнопкой мыши новый раздел в дереве, выберите команду Переименовать, а затем введите имя приложения.
Щелкните правой кнопкой мыши новый раздел в дереве и выберите Создать > Строковое значение.
Щелкните debugger правой кнопкой мыши и выберите Изменить.
В диалоговом окне Изменение строки введите vsjitdebugger.exe в поле Данные значения, а затем нажмите кнопку OK.
Отладка с несколькими процессами
При отладке приложения с несколькими процессами команды прерывания, пошагового выполнения и продолжения выполнения затрагивают все процессы по умолчанию. Например, когда процесс приостанавливается в точке останова, выполнение всех остальных процессов также приостанавливается. Можно изменить это принимаемое по умолчанию поведение, чтобы обрести больший контроль над целевыми объектами команд выполнения.
Включение или отключение приостановки всех процессов при прерывании одного процесса
Команды прерывания, пошагового выполнения и продолжения выполнения
В следующей таблице описано действие команд отладки при установке или снятии флажка Прерывать все процессы при прерывании одного процесса.
Поиск исходных файлов и файлов символов (PDB)
Для перехода по исходному коду процесса отладчику требуется доступ к исходным файлам и файлам символов процесса. Дополнительные сведения см. в разделе Указание файлов символов (PDB) и исходных файлов.
Если не удается получить доступ к файлам процесса, для перемещения можно воспользоваться окном Дизассемблирование. Дополнительные сведения см. в разделе Практическое руководство. использовать окно дизассемблирования.
Переключение между процессами
Во время отладки можно подключиться к нескольким процессам, но в любой момент времени только один из них будет активным в отладчике. Активный или текущий процесс можно выбрать с помощью панели инструментов Место отладки или в окне Процессы. Для переключения между процессами оба процесса должны находиться в режиме приостановки выполнения.
Установка текущего процесса на панели инструментов «Место отладки»
Чтобы открыть панель инструментов Место отладки, выберите Вид > Панели инструментов > Место отладки.
Во время отладки на панели инструментов Место отладки в раскрывающемся списке Процесс выберите процесс, который необходимо задать в качестве текущего.
Установка текущего процесса в окне «Процессы»
Чтобы открыть окно Процессы, во время отладки выберите Отладка > Окна > Процессы.
В окне Процессы текущий процесс будет отмечен желтой стрелкой. Дважды щелкните процесс, который необходимо задать в качестве текущего.
Переключение к процессу делает этот процесс текущим процессом для отладки. Статус текущего процесса отображается в окнах отладчика, и все команды пошагового выполнения влияют только на текущий процесс.
Остановка отладки с несколькими процессами
По умолчанию при выборе Отладка > Остановить отладку отладчик завершается или отсоединяется от всех процессов.
Если в отладчике был запущен текущий процесс, этот процесс завершается.
Если отладчик был присоединен к текущему процессу, отладчик отсоединяется от процесса, не прекращая его выполнение.
Если отладка процесса запущена из решения Visual Studio, присоединитесь к другому уже запущенному процессу, затем выберите Остановить отладку и сеанс отладки завершится. Процесс, запущенный в Visual Studio, завершится, а процесс, к которому вы присоединились, продолжит выполняться.
Чтобы управлять влиянием параметра Остановить отладку на отдельный процесс, в окне Процессы щелкните процесс правой кнопкой мыши и выберите или снимите флажок Отсоединиться при остановке отладки.
Параметр отладчика Прерывать все процессы при прерывании одного не влияет на поведение остановки, завершения процессов и отсоединения от процессов.
Команды остановки, окончания и отсоединения
В следующей таблице описаны действия команд отладчика по остановке, завершению и отсоединению с несколькими процессами.
Не удается присоединиться к процессу
Не удается присоединиться к процессу. Компонент отладчика на сервере получил отказ в доступе при подключении к этому компьютеру.
Существуют два типичных скрипта, вызывающих эту ошибку:
Сценарий 1. Компьютер A работает под управлением Windows XP. Компьютер B работает под управлением Windows Server 2003. Реестр на компьютере B содержит следующее значение DWORD:
Пользователь 1 запускает сеанс службы терминалов (сеанс 1) на компьютере B и запускает управляемое приложение из этого сеанса.
Пользователь 2, являющийся администратором обоих компьютеров, вошел в систему компьютера A. С этого компьютера он пытается установить подключение к приложению, которое выполняется в сеансе 1 на компьютере B.
Сценарий 2. Один пользователь вошел в систему на двух компьютерах (A и B) в одной и той же рабочей группе, используя одинаковые пароли на обоих компьютерах. Отладчик выполняется на компьютере A и пытается подключиться к управляемому приложению, выполняющемуся на компьютере B. На компьютере A для параметра Сетевой доступ: модель совместного доступа и безопасности для локальных учетных записей задано значение Гость.
Решение скрипта 1
Решение скрипта 2
В меню Пуск выберите Панель управления.
На панели управления дважды щелкните Администрирование.
В окне «Администрирование» дважды щелкните пункт Локальная политика безопасности.
В окне «Локальная политика безопасности» выберите Локальные политики.
В столбце Политики дважды щелкните Доступ к сети: модель совместного доступа и безопасности для локальных учетных записей.
В диалоговом окне Сетевой доступ: модель совместного доступа и безопасности для локальных учетных записей измените локальный параметр безопасности на Классический и нажмите кнопку ОК.
Изменение модели безопасности на обычную может привести к непредвиденным возможностям доступа к общим файлам и DCOM-компонентам. Если сделать это, удаленный пользователь сможет проходить проверку подлинности под локальной учетной записью пользователя вместо записи «Гость». Если имя пользователя и пароль удаленного пользователя совпадают с вашими, то он сможет получить доступ к любой папке или объекту DCOM, которые открыты вами для общего доступа. Если используется эта модель безопасности, убедитесь, что для всех учетных записей пользователей на компьютере заданы надежные пароли, или настройте изолированную сеть для отладочных и отлаживаемых компьютеров с целью предотвращения несанкционированного доступа.
Отладка приложения, которое не входит в решение Visual Studio (C++, C#, Visual Basic, F#)
Иногда требуется выполнить отладку приложения (EXE-файл), которое не является частью решения Visual Studio. Это может быть проект с открытой папкой, вы или кто-то другой мог создать приложение вне Visual Studio или вы получили приложение в другом месте.
Для проекта с открытой папкой в Visual Studio (без файла проекта или решения) см. статью Выполнение и отладка кода или (для C++) Настройка параметров отладки с помощью launch.vs.json.
Для приложения, которое не существует в Visual Studio, отладка обычно выполняется путем запуска за пределами Visual Studio, а затем присоединения с помощью функции Присоединение к процессу в отладчике Visual Studio. Дополнительные сведения см. в статье Присоединение к выполняемым процессам.
Присоединение к приложению требует выполнения некоторых операций вручную, и это занимает несколько секунд. Из-за этой задержки присоединение не помогает отладить проблемы при запуске или приложение, которое не ждет ввода данных пользователем и быстро завершается.
В таких ситуациях можно создать проект Visual Studio EXE для приложения или импортировать его в существующее решение C#, Visual Basic или C++. Не все языки программирования поддерживают исполняемые проекты.
Функции отладки для приложения, не созданного в Visual Studio, ограниченны, независимо от того, присоединяетесь ли вы к нему или добавляете в решение Visual Studio.
Если у вас есть исходный код, лучше всего импортировать его в проект Visual Studio. Затем запустите отладочную сборку приложения.
Если у вас нет исходного кода и у приложения нет отладочной информации в совместимом формате, вам доступно немного функций отладки.
Создание EXE-проекта для существующего приложения
В Visual Studio последовательно выберите Файл > Открыть > Проект.
В диалоговом окне Открыть проект выберите Все файлы проекта, если они еще не выбраны, в раскрывающемся списке рядом с полем Имя файла.
Перейдите к EXE-файлу, выберите его и щелкните Открыть.
Файл появится в новом временном решении Visual Studio.
Запустите отладку приложения, выбрав команду выполнения, например Начать отладку в меню Отладка.
Чтобы импортировать приложение в решение Visual Studio
Когда решение C++, C# или Visual Basic будет открыто в Visual Studio, выберите Файл > Добавить > Существующий проект.
В диалоговом окне Открыть проект выберите Все файлы проекта, если они еще не выбраны, в раскрывающемся списке рядом с полем Имя файла.
Перейдите к EXE-файлу, выберите его и щелкните Открыть.
Файл появится как новый проект в текущем решении.
Выберите новый файл и запустите отладку приложения, выбрав команду выполнения, например Начать отладку в меню Отладка.
Присоединение к процессу visual studio что это
Присоединение к выполняемым процессам с использованием отладчика Visual Studio
Отладчик Visual Studio можно подключить к запущенному процессу на локальном или удаленном компьютере. После выполнения процесса выберите Отладка > Подключить к процессу или нажмите клавиши CTRL+ALT+P в Visual Studio и используйте диалоговое окно Подключение к процессу, чтобы подключить отладчик к процессу.
Параметр Подключить к процессу можно использовать для отладки запущенных приложений на локальных или удаленных компьютерах, одновременной отладки нескольких процессов, отладки приложений, которые не были созданы в Visual Studio, или отладки любого приложения, которое не было запущено из Visual Studio с прикрепленным отладчиком. Например, если вы используете приложение без отладчика и столкнулись с исключением, можно присоединить отладчик к процессу, в котором выполняется приложение, и начать отладку.
[!TIP] Не уверены, следует ли использовать параметр Подключить к процессу для сценария отладки? См. раздел Общие сценарии отладки.
Присоединение к выполняющемуся процессу на локальном компьютере
Сведения о том, как быстро присоединиться к процессу, подключенному ранее, см. в разделе Повторное подключение к процессу.
Порядок присоединения к процессу на локальном компьютере
В Visual Studio выберите Отладка > Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.
Проверьте значение параметра Тип подключения.
В большинстве случаев можно использовать значение По умолчанию. Для некоторых сценариев может потребоваться другой тип подключения. Дополнительные сведения см. в других разделах этой статьи, а также в разделе Общие сценарии отладки.
В поле Цель подключения укажите имя локального компьютера.
[!NOTE] Во время отладки можно подключиться к нескольким приложениям, но в любой момент времени только один из них активен в отладчике. Можно выбрать текущую программу в панели инструментов Место отладки или окне Процессы в Visual Studio.
Присоединение к процессу на удаленном компьютере
В диалоговом окне Подключение к процессу также можно выбрать удаленный компьютер, просмотреть список доступных процессов, запущенных на этом компьютере, и подключиться к одному или нескольким процессам для отладки. На удаленном компьютере должен выполняться удаленный отладчик (msvsmon.exe). Дополнительные сведения см. в статье Удаленная отладка.
Более полные инструкции по отладке приложений ASP.NET, развернутых в службах IIS, см. в разделе Удаленная отладка ASP.NET на удаленном компьютере IIS.
Присоединение к выполняющемуся процессу на удаленном компьютере
В Visual Studio выберите Отладка > Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.
Проверьте значение параметра Тип подключения.
В большинстве случаев можно использовать значение По умолчанию. В некоторых сценариях, таких как отладка Linux или контейнерного приложения, требуется другой тип подключения. Дополнительные сведения см. в других разделах этой статьи, а также в разделе Общие сценарии отладки.
В поле Целевой объект подключения выберите удаленный компьютер одним из следующих способов.
Щелкните стрелку раскрывающегося списка Целевой объект подключения и выберите из раскрывающегося списка имя компьютера.
Введите имя компьютера в поле Целевой объект подключения и нажмите клавишу ВВОД.
Убедитесь, что Visual Studio добавляет требуемый порт в имя компьютера, которое отображается в формате :порт.
. moniker range=»>= vs-2022″
[!NOTE] Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4026 — это порт по умолчанию для удаленного отладчика Visual Studio 2022. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.
[!NOTE] Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4024 — это порт по умолчанию для удаленного отладчика Visual Studio 2019. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.
[!NOTE] Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4022 — это порт по умолчанию для удаленного отладчика Visual Studio 2017. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.
Нажмите кнопку Найти рядом с полем Целевой объект подключения, чтобы открыть диалоговое окно Удаленные подключения. В диалоговом окне Удаленные подключения перечислены все устройства, которые имеются в локальной подсети или которые напрямую подключены к компьютеру. Для обнаружения удаленных устройств может потребоваться открыть UDP-порт 3702 на сервере. Выберите нужный компьютер или устройство, после чего нажмите Выбрать.
[!NOTE] Значение параметра Тип подключения сохраняется между сеансами отладки. Параметр Целевой объект подключения хранится между сеансами отладки только в случае успешного подключения отладки с этим целевым объектом.
Нажмите кнопку Обновить, чтобы заполнить список Доступные процессы.
[!TIP] Процессы могут запускаться и останавливаться в фоновом режиме, пока диалоговое окно Подключение к процессу открыто, поэтому список запущенных процессов может не всегда быть актуальным. Чтобы просмотреть актуальный список, можно в любое время нажать кнопку Обновить.
В списке Доступные процессы найдите и выберите процессы, к которым нужно присоединиться.
Чтобы быстро выбрать процесс, введите его имя или первую букву в поле Фильтр процессов.
Если вы не знаете имя процесса, просмотрите список или обратитесь к разделу Общие сценарии отладки, чтобы ознакомиться с некоторыми распространенными именами процессов.
Чтобы найти процесс, который выполняется с другой учетной записью пользователя, установите флажок Показать процессы всех пользователей.
Убедитесь, что в окне Присоединиться к указан тип кода, который планируется отладить. Для большинства типов приложений можно выбрать значение по умолчанию Автоматически.
При использовании типа подключения По умолчанию можно вручную выбрать тип кода, к которому нужно подключиться. В противном случае кнопка Выбрать может быть неактивна.
Выбор кода вручную
Выберите Подключить.
[!NOTE] Во время отладки можно подключиться к нескольким приложениям, но в любой момент времени только один из них активен в отладчике. Можно выбрать текущую программу в панели инструментов Место отладки или окне Процессы в Visual Studio.
В некоторых случаях при отладке в сеансе удаленного рабочего стола (службы терминалов) в списке Доступные процессы не отображаются все доступные процессы. При работе с Visual Studio в качестве пользователя с ограниченным доступом в списке Доступные процессы не будут отображаться процессы, запущенные в сеансе 0, который используется для служб и других серверных процессов, включая w3wp.exe. Можно устранить эту проблему, запустив [!INCLUDEvsprvs] под учетной записью администратора или запустив [!INCLUDEvsprvs] с консоли сервера вместо сеанса служб терминалов.
из командной строки Windows. Можно определить идентификатор процесса с помощью tlist.exe. Чтобы получить файл tlist.exe, скачайте и установите средства отладки для Windows, которые доступны на странице скачиваемых файлов WDK и WinDbg.
Если вы выполняете публикацию в Службу приложений Azure (Windows), параметр Подключить отладчик можно найти в меню . в разделе Размещение в профиле публикации. Visual Studio пытается подключить удаленный отладчик к экземпляру Службы приложений Azure (Windows), в котором публикуется профиль.
. image type=»content» source=»../debugger/media/attach-debugger-publish-profile.png» alt-text=»Снимок экрана: параметр «Подключить отладчик» на странице сводки публикации».
. moniker range=»>= vs-2019″
Присоединение к процессу, выполняющемуся в контейнере Docker
Повторное подключение к процессу
Чтобы быстро присоединиться к процессам, к которым вы ранее были присоединены, выберите Отладка > Повторно подключиться к процессу (SHIFT+ALT+P). При выборе этой команды отладчик сразу же попытается присоединиться к последним процессам, к которым вы подключались, сначала попытавшись выполнить сопоставление с ИД предыдущего процесса, а если это не удается, то путем сопоставления с именем предыдущего процесса. Если совпадений не найдено или несколько процессов имеют одно и то же имя, откроется диалоговое окно Подключение к процессу, в котором можно выбрать правильный процесс.
[!NOTE] Команда Повторно подключиться к процессу доступна начиная с Visual Studio 2017.
Общие сценарии отладки
Чтобы определить, следует ли использовать команду Подключиться к процессу и к какому процессу подключиться, используйте таблицу ниже, в которой приведены несколько распространенных сценариев отладки со ссылками на дополнительные инструкции, где это возможно. (Этот список не является исчерпывающим.)
Для некоторых типов приложений, например универсальных приложений для Windows (UWP), не следует напрямую подключаться к имени процесса. Вместо этого необходимо использовать команду Отладка установленного пакета приложения в Visual Studio (см. таблицу).
Чтобы быстро выбрать выполняющийся процесс для подключения, в Visual Studio нажмите клавиши CTRL+ALT+P, а затем введите первую букву имени процесса.
Использование функций отладчика
Чтобы использовать все функции отладчика Visual Studio (например, при обнаружении точек останова) при присоединении к процессу, приложение должно точно соответствовать локальным источнику и символам. То есть отладчик должен иметь возможность загрузки правильных файлов символов (PDB). По умолчанию для этого требуется отладочная сборка.
В сценариях удаленной отладки должен быть уже открыт исходный код (или копия исходного кода) в Visual Studio. Скомпилированные двоичные файлы приложения на удаленном компьютере должны поступать из той же сборки, что и на локальном компьютере.
В некоторых локальных сценариях отладки в Visual Studio можно выполнять отладку без доступа к источнику, если в приложении есть правильные файлы символов. По умолчанию для этого требуется отладочная сборка. Дополнительные сведения см. в разделе Указание файлов символов и исходных файлов.
Устранение ошибок присоединения
В некоторых сценариях отладчику может потребоваться помощь, чтобы правильно определить тип отлаживаемого кода. Если значения для подключения заданы правильно (проверить процесс можно в списке Доступные процессы), но отладчику не удается подключиться, попробуйте выбрать наиболее подходящий тип подключения в списке Тип подключения. Это может потребоваться, например, при отладке приложения Linux или Python. Если используется тип подключения «По умолчанию», можно также выбрать определенный тип кода для подключения, как описано далее в этом разделе.
Иногда отладчик может успешно присоединяться к одному типу кода, но не к другому. Это происходит в следующих случаях:
Если отладчик может присоединиться не ко всем типам кода, отобразится сообщение со сведениями о типах, к которым присоединиться не удалось.
Если отладчик успешно подключается хотя бы к одному типу кода, то можно приступать к отладке процесса. Но отлаживать можно будет только те типы кода, к которым удалось подсоединиться. Неподключенный код в этом процессе будет по-прежнему выполняться, но задавать в этом коде точки останова, просматривать данные и выполнять другие операции отладки не удастся.
Если нужны более конкретные сведения о том, почему отладчику не удалось присоединиться к некоторому типу кода, попробуйте повторно присоединиться только к этому типу кода.
Чтобы получить подробные сведения о том, почему не удалось присоединиться к типу кода:
Отключитесь от процесса. В меню Отладка выберите Отсоединить все.
Вновь подключитесь к процессу, выбрав только тип кода.
В диалоговом окне Присоединение к процессу выберите процесс в списке Доступные процессы.
Щелкните Выбрать.
В диалоговом окне Выбор типа кода выберите Выполнять отладку кода следующих типов и выберите тип кода, к которому не удалось присоединиться. Отмените выбор других типов кода.
Нажмите кнопку ОК.
В диалоговом окне Подключение к процессу нажмите Подключиться.
На этот раз присоединение не пройдет полностью, и будет выдано сообщение о конкретной ошибке.