Visual studio attach to process вместо start
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
Узнайте, как подключить отладчик Visual Studio к запущенному процессу на локальном или удаленном компьютере.
Присоединение к выполняемым процессам с использованием отладчика Visual Studio
Отладчик Visual Studio можно подключить к запущенному процессу на локальном или удаленном компьютере. После выполнения процесса выберите Отладка > Подключить к процессу или нажмите клавиши CTRL+ALT+P в Visual Studio и используйте диалоговое окно Подключение к процессу, чтобы подключить отладчик к процессу.
Параметр Подключить к процессу можно использовать для отладки запущенных приложений на локальных или удаленных компьютерах, одновременной отладки нескольких процессов, отладки приложений, которые не были созданы в Visual Studio, или отладки любого приложения, которое не было запущено из Visual Studio с прикрепленным отладчиком. Например, если вы используете приложение без отладчика и столкнулись с исключением, можно присоединить отладчик к процессу, в котором выполняется приложение, и начать отладку.
[!TIP] Не уверены, следует ли использовать параметр Подключить к процессу для сценария отладки? См. раздел Общие сценарии отладки.
Присоединение к выполняющемуся процессу на локальном компьютере
Сведения о том, как быстро присоединиться к процессу, подключенному ранее, см. в разделе Повторное подключение к процессу.
Порядок присоединения к процессу на локальном компьютере
В Visual Studio выберите Отладка > Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.
Проверьте значение параметра Тип подключения.
В большинстве случаев можно использовать значение По умолчанию. Для некоторых сценариев может потребоваться другой тип подключения. Дополнительные сведения см. в других разделах этой статьи, а также в разделе Общие сценарии отладки.
В поле Цель подключения укажите имя локального компьютера.
. moniker range=">= vs-2022" . moniker-end . moniker range="
В списке Доступные процессы найдите и выберите процессы, к которым нужно присоединиться.
Чтобы быстро выбрать процесс, введите его имя или первую букву в поле Фильтр процессов.
Если вы не знаете имя процесса, просмотрите список или обратитесь к разделу Общие сценарии отладки, чтобы ознакомиться с некоторыми распространенными именами процессов.
[!TIP] Процессы могут запускаться и останавливаться в фоновом режиме, пока диалоговое окно Подключение к процессу открыто, поэтому список запущенных процессов может не всегда быть актуальным. Чтобы просмотреть актуальный список, можно в любое время нажать кнопку Обновить.
Убедитесь, что в окне Присоединиться к указан тип кода, который планируется отладить. Для большинства типов приложений можно выбрать значение по умолчанию Автоматически.
При использовании типа подключения По умолчанию можно вручную выбрать тип кода, к которому нужно подключиться. В противном случае кнопка Выбрать может быть неактивна.
Выбор кода вручную
Выберите Подключить.
. moniker range=">= vs-2022"
[!TIP] В сценарии с несколькими идентичными процессами вы можете указать процесс с использованием столбца командной строки или сведений о процессе w3wp из столбца заголовка. . moniker-end
[!NOTE] Во время отладки можно подключиться к нескольким приложениям, но в любой момент времени только один из них активен в отладчике. Можно выбрать текущую программу в панели инструментов Место отладки или окне Процессы в Visual Studio.
Присоединение к процессу на удаленном компьютере
В диалоговом окне Подключение к процессу также можно выбрать удаленный компьютер, просмотреть список доступных процессов, запущенных на этом компьютере, и подключиться к одному или нескольким процессам для отладки. На удаленном компьютере должен выполняться удаленный отладчик (msvsmon.exe). Дополнительные сведения см. в статье Удаленная отладка.
Присоединение к выполняющемуся процессу на удаленном компьютере
В Visual Studio выберите Отладка > Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.
Проверьте значение параметра Тип подключения.
В большинстве случаев можно использовать значение По умолчанию. В некоторых сценариях, таких как отладка Linux или контейнерного приложения, требуется другой тип подключения. Дополнительные сведения см. в других разделах этой статьи, а также в разделе Общие сценарии отладки.
В поле Целевой объект подключения выберите удаленный компьютер одним из следующих способов.
Щелкните стрелку раскрывающегося списка Целевой объект подключения и выберите из раскрывающегося списка имя компьютера.
Введите имя компьютера в поле Целевой объект подключения и нажмите клавишу ВВОД.
Убедитесь, что Visual Studio добавляет требуемый порт в имя компьютера, которое отображается в формате :порт.
. moniker range=">= vs-2022"
[!NOTE] Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4026 — это порт по умолчанию для удаленного отладчика Visual Studio 2022. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.
. moniker-end . moniker range="vs-2019"
[!NOTE] Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4024 — это порт по умолчанию для удаленного отладчика Visual Studio 2019. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.
. moniker-end . moniker range="vs-2017"
[!NOTE] Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4022 — это порт по умолчанию для удаленного отладчика Visual Studio 2017. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.
[!NOTE] Значение параметра Тип подключения сохраняется между сеансами отладки. Параметр Целевой объект подключения хранится между сеансами отладки только в случае успешного подключения отладки с этим целевым объектом.
[!TIP] Процессы могут запускаться и останавливаться в фоновом режиме, пока диалоговое окно Подключение к процессу открыто, поэтому список запущенных процессов может не всегда быть актуальным. Чтобы просмотреть актуальный список, можно в любое время нажать кнопку Обновить.
В списке Доступные процессы найдите и выберите процессы, к которым нужно присоединиться.
Чтобы быстро выбрать процесс, введите его имя или первую букву в поле Фильтр процессов.
Если вы не знаете имя процесса, просмотрите список или обратитесь к разделу Общие сценарии отладки, чтобы ознакомиться с некоторыми распространенными именами процессов.
Чтобы найти процесс, который выполняется с другой учетной записью пользователя, установите флажок Показать процессы всех пользователей.
Убедитесь, что в окне Присоединиться к указан тип кода, который планируется отладить. Для большинства типов приложений можно выбрать значение по умолчанию Автоматически.
При использовании типа подключения По умолчанию можно вручную выбрать тип кода, к которому нужно подключиться. В противном случае кнопка Выбрать может быть неактивна.
Выбор кода вручную
Выберите Подключить.
[!NOTE] Во время отладки можно подключиться к нескольким приложениям, но в любой момент времени только один из них активен в отладчике. Можно выбрать текущую программу в панели инструментов Место отладки или окне Процессы в Visual Studio.
В некоторых случаях при отладке в сеансе удаленного рабочего стола (службы терминалов) в списке Доступные процессы не отображаются все доступные процессы. При работе с Visual Studio в качестве пользователя с ограниченным доступом в списке Доступные процессы не будут отображаться процессы, запущенные в сеансе 0, который используется для служб и других серверных процессов, включая w3wp.exe. Можно устранить эту проблему, запустив [!INCLUDEvsprvs] под учетной записью администратора или запустив [!INCLUDEvsprvs] с консоли сервера вместо сеанса служб терминалов.
Если ни один из этих обходных путей использовать невозможно, третий вариант — присоединение к процессу путем запуска vsjitdebugger.exe -p из командной строки Windows. Можно определить идентификатор процесса с помощью tlist.exe. Чтобы получить файл tlist.exe, скачайте и установите средства отладки для Windows, которые доступны на странице скачиваемых файлов WDK и WinDbg.
. moniker range=">= vs-2022"
Если вы выполняете публикацию в Службе приложений Azure (Windows), ознакомьтесь с инструкциями в разделе Отладка служб приложений Azure. . moniker-end
Если вы выполняете публикацию в Службу приложений Azure (Windows), параметр Подключить отладчик можно найти в меню . в разделе Размещение в профиле публикации. Visual Studio пытается подключить удаленный отладчик к экземпляру Службы приложений Azure (Windows), в котором публикуется профиль.
. image type="content" source="../debugger/media/attach-debugger-publish-profile.jpg" alt-text="Снимок экрана: параметр "Подключить отладчик" на странице сводки публикации". . moniker-end
. moniker range=">= vs-2019"
Присоединение к процессу, выполняющемуся в контейнере Docker
Повторное подключение к процессу
Чтобы быстро присоединиться к процессам, к которым вы ранее были присоединены, выберите Отладка > Повторно подключиться к процессу (SHIFT+ALT+P). При выборе этой команды отладчик сразу же попытается присоединиться к последним процессам, к которым вы подключались, сначала попытавшись выполнить сопоставление с ИД предыдущего процесса, а если это не удается, то путем сопоставления с именем предыдущего процесса. Если совпадений не найдено или несколько процессов имеют одно и то же имя, откроется диалоговое окно Подключение к процессу, в котором можно выбрать правильный процесс.
[!NOTE] Команда Повторно подключиться к процессу доступна начиная с Visual Studio 2017.
Общие сценарии отладки
Чтобы определить, следует ли использовать команду Подключиться к процессу и к какому процессу подключиться, используйте таблицу ниже, в которой приведены несколько распространенных сценариев отладки со ссылками на дополнительные инструкции, где это возможно. (Этот список не является исчерпывающим.)
Для некоторых типов приложений, например универсальных приложений для Windows (UWP), не следует напрямую подключаться к имени процесса. Вместо этого необходимо использовать команду Отладка установленного пакета приложения в Visual Studio (см. таблицу).
Чтобы отладчик мог присоединиться к коду на языке C++, код должен предоставлять DebuggableAttribute . Это можно добавить в код автоматически, путем связывания с параметром /ASSEMBLYDEBUG компоновщика.
Для отладки скриптов на стороне клиента в браузере должна быть включена отладка скриптов. Для отладки клиентского скрипта в Chrome выберите JavaScript (Chrome) или JavaScript (Microsoft Edge - Chromium) в качестве типа кода, и, в зависимости от типа приложения, может потребоваться закрыть все экземпляры Chrome и запустить браузер в режиме отладки (введите chrome.exe --remote-debugging-port=9222 в командной строке). В более ранних версиях Visual Studio в качестве отладчика скриптов для Chrome использовался Веб-пакет.
Чтобы быстро выбрать выполняющийся процесс для подключения, в Visual Studio нажмите клавиши CTRL+ALT+P, а затем введите первую букву имени процесса.
Использование функций отладчика
Чтобы использовать все функции отладчика Visual Studio (например, при обнаружении точек останова) при присоединении к процессу, приложение должно точно соответствовать локальным источнику и символам. То есть отладчик должен иметь возможность загрузки правильных файлов символов (PDB). По умолчанию для этого требуется отладочная сборка.
В сценариях удаленной отладки должен быть уже открыт исходный код (или копия исходного кода) в Visual Studio. Скомпилированные двоичные файлы приложения на удаленном компьютере должны поступать из той же сборки, что и на локальном компьютере.
В некоторых локальных сценариях отладки в Visual Studio можно выполнять отладку без доступа к источнику, если в приложении есть правильные файлы символов. По умолчанию для этого требуется отладочная сборка. Дополнительные сведения см. в разделе Указание файлов символов и исходных файлов.
Устранение ошибок присоединения
В некоторых сценариях отладчику может потребоваться помощь, чтобы правильно определить тип отлаживаемого кода. Если значения для подключения заданы правильно (проверить процесс можно в списке Доступные процессы), но отладчику не удается подключиться, попробуйте выбрать наиболее подходящий тип подключения в списке Тип подключения. Это может потребоваться, например, при отладке приложения Linux или Python. Если используется тип подключения "По умолчанию", можно также выбрать определенный тип кода для подключения, как описано далее в этом разделе.
При присоединении отладчика к выполняющемуся процессу этот процесс может содержать один или несколько типов кода. Типы кода, к которым может присоединиться отладчик, отображаются и выбираются в диалоговом окне Выбор типа кода .
Иногда отладчик может успешно присоединяться к одному типу кода, но не к другому. Это происходит в следующих случаях:
- При попытке присоединения к процессу, выполняющемуся на удаленном компьютере. На удаленном компьютере для одних типов кода могут иметься компоненты удаленной отладки, а для других — нет.
- При попытке присоединиться к двум или более процессам для прямой отладки базы данных. Отладка SQL поддерживает присоединение только к одному процессу.
Если отладчик успешно подключается хотя бы к одному типу кода, то можно приступать к отладке процесса. Но отлаживать можно будет только те типы кода, к которым удалось подсоединиться. Неподключенный код в этом процессе будет по-прежнему выполняться, но задавать в этом коде точки останова, просматривать данные и выполнять другие операции отладки не удастся.
Если нужны более конкретные сведения о том, почему отладчику не удалось присоединиться к некоторому типу кода, попробуйте повторно присоединиться только к этому типу кода.
Чтобы получить подробные сведения о том, почему не удалось присоединиться к типу кода:
Отключитесь от процесса. В меню Отладка выберите Отсоединить все.
Вновь подключитесь к процессу, выбрав только тип кода.
В диалоговом окне Присоединение к процессу выберите процесс в списке Доступные процессы.
Щелкните Выбрать.
В диалоговом окне Выбор типа кода выберите Выполнять отладку кода следующих типов и выберите тип кода, к которому не удалось присоединиться. Отмените выбор других типов кода.
В диалоговом окне Подключение к процессу нажмите Подключиться.
Отладчик Visual Studio можно подключить к запущенному процессу на локальном или удаленном компьютере. После выполнения процесса выберите Отладка > Подключить к процессу или нажмите клавиши CTRL+ALT+P в Visual Studio и используйте диалоговое окно Подключение к процессу, чтобы подключить отладчик к процессу.
Параметр Подключить к процессу можно использовать для отладки запущенных приложений на локальных или удаленных компьютерах, одновременной отладки нескольких процессов, отладки приложений, которые не были созданы в Visual Studio, или отладки любого приложения, которое не было запущено из Visual Studio с прикрепленным отладчиком. Например, если вы используете приложение без отладчика и столкнулись с исключением, можно присоединить отладчик к процессу, в котором выполняется приложение, и начать отладку.
Не уверены, следует ли использовать параметр Подключить к процессу для сценария отладки? См. раздел Общие сценарии отладки.
Присоединение к выполняющемуся процессу на локальном компьютере
Сведения о том, как быстро присоединиться к процессу, подключенному ранее, см. в разделе Повторное подключение к процессу.
Порядок присоединения к процессу на локальном компьютере
В Visual Studio выберите Отладка > Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.
Проверьте значение параметра Тип подключения.
В большинстве случаев можно использовать значение По умолчанию. Для некоторых сценариев может потребоваться другой тип подключения. Дополнительные сведения см. в других разделах этой статьи, а также в разделе Общие сценарии отладки.
В поле Цель подключения укажите имя локального компьютера.
В списке Доступные процессы найдите и выберите процессы, к которым нужно присоединиться.
Чтобы быстро выбрать процесс, введите его имя или первую букву в поле Фильтр процессов.
Если вы не знаете имя процесса, просмотрите список или обратитесь к разделу Общие сценарии отладки, чтобы ознакомиться с некоторыми распространенными именами процессов.
Процессы могут запускаться и останавливаться в фоновом режиме, пока диалоговое окно Подключение к процессу открыто, поэтому список запущенных процессов может не всегда быть актуальным. Чтобы просмотреть актуальный список, можно в любое время нажать кнопку Обновить.
Убедитесь, что в окне Присоединиться к указан тип кода, который планируется отладить. Для большинства типов приложений можно выбрать значение по умолчанию Автоматически.
При использовании типа подключения По умолчанию можно вручную выбрать тип кода, к которому нужно подключиться. В противном случае кнопка Выбрать может быть неактивна.
Выбор кода вручную
Выберите Подключить.
В сценарии с несколькими идентичными процессами вы можете указать процесс с использованием столбца командной строки или сведений о процессе w3wp из столбца заголовка.
Во время отладки можно подключиться к нескольким приложениям, но в любой момент времени только один из них активен в отладчике. Можно выбрать текущую программу в панели инструментов Место отладки или окне Процессы в Visual Studio.
Присоединение к процессу на удаленном компьютере
В диалоговом окне Подключение к процессу также можно выбрать удаленный компьютер, просмотреть список доступных процессов, запущенных на этом компьютере, и подключиться к одному или нескольким процессам для отладки. На удаленном компьютере должен выполняться удаленный отладчик (msvsmon.exe). Дополнительные сведения см. в статье Удаленная отладка.
Присоединение к выполняющемуся процессу на удаленном компьютере
В Visual Studio выберите Отладка > Подключить к процессу (или нажмите клавиши CTRL+ALT+P), чтобы открыть диалоговое окно Подключение к процессу.
Проверьте значение параметра Тип подключения.
В большинстве случаев можно использовать значение По умолчанию. В некоторых сценариях, таких как отладка Linux или контейнерного приложения, требуется другой тип подключения. Дополнительные сведения см. в других разделах этой статьи, а также в разделе Общие сценарии отладки.
В поле Целевой объект подключения выберите удаленный компьютер одним из следующих способов.
Щелкните стрелку раскрывающегося списка Целевой объект подключения и выберите из раскрывающегося списка имя компьютера.
Введите имя компьютера в поле Целевой объект подключения и нажмите клавишу ВВОД.
Убедитесь, что Visual Studio добавляет требуемый порт в имя компьютера, которое отображается в формате :порт.
Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4026 — это порт по умолчанию для удаленного отладчика Visual Studio 2022. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.
Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4024 — это порт по умолчанию для удаленного отладчика Visual Studio 2019. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.
Если вы не можете подключиться с помощью имени удаленного компьютера, попробуйте использовать IP-адрес и порт (например, 123.45.678.9:4022 ). 4022 — это порт по умолчанию для удаленного отладчика Visual Studio 2017. Сведения о других назначениях портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.
Значение параметра Тип подключения сохраняется между сеансами отладки. Параметр Целевой объект подключения хранится между сеансами отладки только в случае успешного подключения отладки с этим целевым объектом.
Процессы могут запускаться и останавливаться в фоновом режиме, пока диалоговое окно Подключение к процессу открыто, поэтому список запущенных процессов может не всегда быть актуальным. Чтобы просмотреть актуальный список, можно в любое время нажать кнопку Обновить.
В списке Доступные процессы найдите и выберите процессы, к которым нужно присоединиться.
Чтобы быстро выбрать процесс, введите его имя или первую букву в поле Фильтр процессов.
Если вы не знаете имя процесса, просмотрите список или обратитесь к разделу Общие сценарии отладки, чтобы ознакомиться с некоторыми распространенными именами процессов.
Чтобы найти процесс, который выполняется с другой учетной записью пользователя, установите флажок Показать процессы всех пользователей.
Если попытаться подключиться к процессу, работающему под управлением ненадежной учетной записи, появится диалоговое окно подтверждения с предупреждением безопасности. Дополнительные сведения см. в статье Предупреждение системы безопасности. Подключение к процессу, который принадлежит пользователю, не являющемуся доверенным, может быть опасным. Если следующие сведения не вызывают доверия, то не следует присоединяться к процессу.
Убедитесь, что в окне Присоединиться к указан тип кода, который планируется отладить. Для большинства типов приложений можно выбрать значение по умолчанию Автоматически.
При использовании типа подключения По умолчанию можно вручную выбрать тип кода, к которому нужно подключиться. В противном случае кнопка Выбрать может быть неактивна.
Выбор кода вручную
Выберите Подключить.
Во время отладки можно подключиться к нескольким приложениям, но в любой момент времени только один из них активен в отладчике. Можно выбрать текущую программу в панели инструментов Место отладки или окне Процессы в Visual Studio.
В некоторых случаях при отладке в сеансе удаленного рабочего стола (службы терминалов) в списке Доступные процессы не отображаются все доступные процессы. При работе с Visual Studio в качестве пользователя с ограниченным доступом в списке Доступные процессы не будут отображаться процессы, запущенные в сеансе 0, который используется для служб и других серверных процессов, включая w3wp.exe. Можно устранить эту проблему, запустив Visual Studio под учетной записью администратора или запустив Visual Studio с консоли сервера вместо сеанса служб терминалов.
Если ни один из этих обходных путей использовать невозможно, третий вариант — присоединение к процессу путем запуска vsjitdebugger.exe -p из командной строки Windows. Можно определить идентификатор процесса с помощью tlist.exe. Чтобы получить файл tlist.exe, скачайте и установите средства отладки для Windows, которые доступны на странице скачиваемых файлов WDK и WinDbg.
Если вы выполняете публикацию в Службе приложений Azure (Windows), ознакомьтесь с инструкциями в разделе Отладка служб приложений Azure.
Если вы выполняете публикацию в Службу приложений Azure (Windows), параметр Подключить отладчик можно найти в меню . в разделе Размещение в профиле публикации. Visual Studio пытается подключить удаленный отладчик к экземпляру Службы приложений Azure (Windows), в котором публикуется профиль.
Присоединение к процессу, выполняющемуся в контейнере Docker
Повторное подключение к процессу
Чтобы быстро присоединиться к процессам, к которым вы ранее были присоединены, выберите Отладка > Повторно подключиться к процессу (SHIFT+ALT+P). При выборе этой команды отладчик сразу же попытается присоединиться к последним процессам, к которым вы подключались, сначала попытавшись выполнить сопоставление с ИД предыдущего процесса, а если это не удается, то путем сопоставления с именем предыдущего процесса. Если совпадений не найдено или несколько процессов имеют одно и то же имя, откроется диалоговое окно Подключение к процессу, в котором можно выбрать правильный процесс.
Команда Повторно подключиться к процессу доступна начиная с Visual Studio 2017.
Общие сценарии отладки
Чтобы определить, следует ли использовать команду Подключиться к процессу и к какому процессу подключиться, используйте таблицу ниже, в которой приведены несколько распространенных сценариев отладки со ссылками на дополнительные инструкции, где это возможно. (Этот список не является исчерпывающим.)
Для некоторых типов приложений, например универсальных приложений для Windows (UWP), не следует напрямую подключаться к имени процесса. Вместо этого необходимо использовать команду Отладка установленного пакета приложения в Visual Studio (см. таблицу).
Чтобы отладчик мог присоединиться к коду на языке C++, код должен предоставлять DebuggableAttribute . Это можно добавить в код автоматически, путем связывания с параметром /ASSEMBLYDEBUG компоновщика.
Для отладки скриптов на стороне клиента в браузере должна быть включена отладка скриптов. Для отладки клиентского скрипта в Chrome выберите JavaScript (Chrome) или JavaScript (Microsoft Edge - Chromium) в качестве типа кода, и, в зависимости от типа приложения, может потребоваться закрыть все экземпляры Chrome и запустить браузер в режиме отладки (введите chrome.exe --remote-debugging-port=9222 в командной строке). В более ранних версиях Visual Studio в качестве отладчика скриптов для Chrome использовался Веб-пакет.
Чтобы быстро выбрать выполняющийся процесс для подключения, в Visual Studio нажмите клавиши CTRL+ALT+P, а затем введите первую букву имени процесса.
Использование функций отладчика
Чтобы использовать все функции отладчика Visual Studio (например, при обнаружении точек останова) при присоединении к процессу, приложение должно точно соответствовать локальным источнику и символам. То есть отладчик должен иметь возможность загрузки правильных файлов символов (PDB). По умолчанию для этого требуется отладочная сборка.
В сценариях удаленной отладки должен быть уже открыт исходный код (или копия исходного кода) в Visual Studio. Скомпилированные двоичные файлы приложения на удаленном компьютере должны поступать из той же сборки, что и на локальном компьютере.
В некоторых локальных сценариях отладки в Visual Studio можно выполнять отладку без доступа к источнику, если в приложении есть правильные файлы символов. По умолчанию для этого требуется отладочная сборка. Дополнительные сведения см. в разделе Указание файлов символов и исходных файлов.
Устранение ошибок присоединения
В некоторых сценариях отладчику может потребоваться помощь, чтобы правильно определить тип отлаживаемого кода. Если значения для подключения заданы правильно (проверить процесс можно в списке Доступные процессы), но отладчику не удается подключиться, попробуйте выбрать наиболее подходящий тип подключения в списке Тип подключения. Это может потребоваться, например, при отладке приложения Linux или Python. Если используется тип подключения "По умолчанию", можно также выбрать определенный тип кода для подключения, как описано далее в этом разделе.
При присоединении отладчика к выполняющемуся процессу этот процесс может содержать один или несколько типов кода. Типы кода, к которым может присоединиться отладчик, отображаются и выбираются в диалоговом окне Выбор типа кода .
Иногда отладчик может успешно присоединяться к одному типу кода, но не к другому. Это происходит в следующих случаях:
- При попытке присоединения к процессу, выполняющемуся на удаленном компьютере. На удаленном компьютере для одних типов кода могут иметься компоненты удаленной отладки, а для других — нет.
- При попытке присоединиться к двум или более процессам для прямой отладки базы данных. Отладка SQL поддерживает присоединение только к одному процессу.
Если отладчик успешно подключается хотя бы к одному типу кода, то можно приступать к отладке процесса. Но отлаживать можно будет только те типы кода, к которым удалось подсоединиться. Неподключенный код в этом процессе будет по-прежнему выполняться, но задавать в этом коде точки останова, просматривать данные и выполнять другие операции отладки не удастся.
Если нужны более конкретные сведения о том, почему отладчику не удалось присоединиться к некоторому типу кода, попробуйте повторно присоединиться только к этому типу кода.
Чтобы получить подробные сведения о том, почему не удалось присоединиться к типу кода:
Отключитесь от процесса. В меню Отладка выберите Отсоединить все.
Вновь подключитесь к процессу, выбрав только тип кода.
В диалоговом окне Присоединение к процессу выберите процесс в списке Доступные процессы.
Щелкните Выбрать.
В диалоговом окне Выбор типа кода выберите Выполнять отладку кода следующих типов и выберите тип кода, к которому не удалось присоединиться. Отмените выбор других типов кода.
В диалоговом окне Подключение к процессу нажмите Подключиться.
Visual Studio can debug a solution that has several processes. You can start and switch between processes, break, continue, and step through source, stop debugging, and end or detach from individual processes.
Start debugging with multiple processes
When more than one project in a Visual Studio solution can run independently, you can select which project the debugger starts. The current startup project appears in bold in Solution Explorer.
To change the startup project, in Solution Explorer, right-click a different project and select Set as StartUp Project.
To start debugging a project from Solution Explorer without making it the startup project, right-click the project and select Debug > Start new instance or Step into new instance.
To set the startup project or multiple projects from solution Properties:
Select the solution in Solution Explorer and then select the Properties icon in the toolbar, or right-click the solution and select Properties.
On the Properties page, select Common Properties > Startup Project.
Select Current selection, Single startup project and a project file, or Multiple startup projects.
If you select Multiple startup projects, you can change the startup order and action to take for each project: Start, Start without debugging, or None.
Select Apply, or OK to apply and close the dialog.
Attach to a process
The debugger can also attach to apps running in processes outside of Visual Studio, including on remote devices. After you attach to an app, you can use the Visual Studio debugger. Debugging features might be limited. It depends on whether the app was built with debug information, whether you have access to the app's source code, and whether the JIT compiler is tracking debug information.
To attach to a running process:
With the app running, select Debug > Attach to Process.
In the Attach to Process dialog box, select the process from the Available Processes list, and then select Attach.
The debugger does not automatically attach to a child process that is started by a debugged process, even if the child project is in the same solution. To debug a child process, either attach to the child process after it starts, or configure the Windows Registry Editor to start the child process in a new debugger instance.
Use the Registry Editor to automatically start a process in the debugger
Sometimes, you might need to debug the startup code for an app that is launched by another process. Examples include services and custom setup actions. You can have the debugger launch and automatically attach to the app.
Start the Windows Registry Editor by running regedit.exe.
In Registry Editor, navigate to HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.
Select the folder of the app that you want to start in the debugger.
If the app isn't listed as a child folder, right-click Image File Execution Options, select New > Key, and type the app name. Or, right-click the new key in the tree, select Rename, and then enter the app name.
Right-click the new key in the tree and select New > String Value.
Right-click debugger and select Modify.
In the Edit String dialog box, type vsjitdebugger.exe in the Value data box, and then select OK.
Debug with multiple processes
When debugging an app with several processes, the breaking, stepping, and continuing debugger commands affect all processes by default. For example, when a process is suspended at a breakpoint, the execution of all other processes is also suspended. You can change this default behavior, to gain more control over the targets of execution commands.
To change whether all processes are suspended when one process breaks:
- Under Tools (or Debug) >Options >Debugging >General, select or clear the Break all processes when one process breaks check box.
Break, step, and continue commands
The following table describes the behaviors of debugging commands when the Break all processes when one process breaks check box is selected or deselected:
Command | Selected | Deselected |
---|---|---|
Debug > Break All | All processes break. | All processes break. |
Debug > Continue | All processes resume. | All suspended processes resume. |
Debug > Step Into, Step Over, or Step Out | All processes run while current process steps. Then all processes break. | Current process steps. Suspended processes resume. Running processes continue. |
Debug > Step Into Current Process, Step Over Current Process, or Step Out Current Process | N/A | Current process steps. Other processes maintain their existing state (suspended or running). |
Source window Breakpoint | All processes break. | Only source window process breaks. |
Source window Run to cursor The source window must be in the current process. | All processes run while source window process runs to cursor and then breaks. Then all other processes break. | Source window process runs to cursor. Other processes maintain their existing state (suspended or running). |
Processes window > Break Process | N/A | Selected process breaks. Other processes maintain their existing state (suspended or running). |
Processes window > Continue Process | N/A | Selected process resumes. Other processes maintain their existing state (suspended or running). |
Find the source and symbol (.pdb) files
To navigate the source code of a process, the debugger needs access to its source files and symbol files. For more information, see Specify symbol (.pdb) and source files.
If you can't access the files for a process, you can navigate by using the Disassembly window. For more information, see How to: Use the Disassembly window.
Switch between processes
You can attach to multiple processes when you're debugging, but only one process is active in the debugger at any given time. You can set the active or current process in the Debug Location toolbar, or in the Processes window. To switch between processes, both processes must be in break mode.
To set the current process from the Debug Location toolbar:
To open the Debug Location toolbar, select View > Toolbars > Debug Location.
During debugging, on the Debug Location toolbar, select the process you want to set as the current process from the Process dropdown.
To set the current process from the Processes window:
To open the Processes window, while debugging, select Debug > Windows > Processes.
In the Processes window, the current process is marked by a yellow arrow. Double-click the process you want to set as the current process.
Switching to a process sets it as the current process for debugging purposes. Debugger windows show the state for the current process, and stepping commands affect only the current process.
Stop debugging with multiple processes
By default, when you select Debug > Stop Debugging, the debugger ends or detaches from all processes.
If the current process was launched in the debugger, the process is ended.
If you attached the debugger to the current process, the debugger detaches from the process and leaves the process running.
If you start debugging a process from a Visual Studio solution, then attach to another process that is already running, and then choose Stop Debugging, the debugging session ends. The process that was started in Visual Studio ends, while the process you attached to keeps running.
To control the way that Stop Debugging affects an individual process, in the Processes window, right-click a process, and then select or clear the Detach when debugging stopped check box.
The Break all processes when one process breaks debugger option does not affect stopping, terminating, or detaching from processes.
Stop, terminate, and detach commands
The following table describes the behaviors of the debugger stop, terminate, and detach commands with multiple processes:
You can attach the Visual Studio debugger to a running process on a local or remote computer. After the process is running, select Debug > Attach to Process or press Ctrl+Alt+p in Visual Studio, and use the Attach to Process dialog to attach the debugger to the process.
You can use Attach to Process to debug running apps on local or remote computers, debug multiple processes simultaneously, debug apps that weren't created in Visual Studio, or debug any app you didn't start from Visual Studio with the debugger attached. For example, if you're running an app without the debugger and hit an exception, you can then attach the debugger to the process running the app and begin debugging.
Not sure whether to use Attach to Process for your debugging scenario? See Common debugging scenarios.
Attach to a running process on your local machine
To quickly reattach to a process you attached to previously, see Reattach to a process.
To attach to a process on your local computer:
In Visual Studio, select Debug > Attach to Process (or press Ctrl+Alt+P) to open the Attach to Process dialog box.
Check the Connection type.
In most scenarios, you can use Default. Some scenarios may require a different connection type. For more info, see other sections in this article or Common debugging scenarios.
Set the Connection target to your local machine name.
In the Available processes list, find and select the process or processes you want to attach to.
To quickly select a process, type its name or first letter in the Filter processes box.
If you don't know the process name, browse through the list, or see Common debugging scenarios for some common process names.
Processes can start and stop in the background while the Attach to Process dialog box is open, so the list of running processes may not always be current. You can select Refresh at any time to see the current list.
In the Attach to field, make sure the type of code you plan to debug is listed. The default Automatic setting works for most app types.
If you are using the Default connection type, you can manually select the type of code you want to attach to. Otherwise, the Select option may be disabled.
To select code types manually:
- Click Select.
- In the Select Code Type dialog box, select Debug these code types. If you experience a failure when you try to attach to a process in the list, you can use the Select Code Type dialog box to help troubleshoot the issue.
- Select the code types you want to debug.
- Select OK.
Select Attach.
In the scenario where you have multiple identical processes, use the Command Line column or the w3wp process details from the Title column to identify the right process.
You can be attached to multiple apps for debugging, but only one app is active in the debugger at a time. You can set the active app in the Visual Studio Debug Location toolbar or Processes window.
Attach to a process on a remote computer
You can also select a remote computer in the Attach to Process dialog box, view a list of available processes running on that computer, and attach to one or more of the processes for debugging. The remote debugger (msvsmon.exe) must be running on the remote computer. For more information, see Remote debugging.
To attach to a running process on a remote computer:
In Visual Studio, select Debug > Attach to Process (or press Ctrl+Alt+P) to open the Attach to Process dialog box.
Check the Connection type.
In most scenarios, you can use Default. Some scenarios, such as debugging Linux or a containerized app, require a different connection type. For more info, see other sections in this article or Common debugging scenarios.
In the Connection target box, select the remote computer, using one of the following methods:
Select the drop-down arrow next to Connection target, and select the computer name from the drop-down list.
Type the computer name in the Connection target box and press Enter.
Verify that Visual Studio adds the required port to the computer name, which appears in the format: :port
If you can't connect using the remote computer name, try using the IP and port address (for example, 123.45.678.9:4022 ). 4026 is the default port for the Visual Studio 2022 remote debugger. For other remote debugger port assignments, see Remote debugger port assignments.
If you can't connect using the remote computer name, try using the IP and port address (for example, 123.45.678.9:4022 ). 4024 is the default port for the Visual Studio 2019 remote debugger. For other remote debugger port assignments, see Remote debugger port assignments.
If you can't connect using the remote computer name, try using the IP and port address (for example, 123.45.678.9:4022 ). 4022 is the default port for the Visual Studio 2017 remote debugger. For other remote debugger port assignments, see Remote debugger port assignments.
Select the Find button next to the Connection target box to open the Remote Connections dialog box. The Remote Connections dialog box lists all the devices that are on your local subnet or directly attached to your computer. You may need to open UDP port 3702 on the server to discover remote devices. Select the computer or device you want, and then click Select.
The Connection type setting persists between debugging sessions. The Connection target setting persists between debugging sessions only if a successful debugging connection occurred with that target.
Click Refresh to populate the Available processes list.
Processes can start and stop in the background while the Attach to Process dialog box is open, so the list of running processes may not always be current. You can select Refresh at any time to see the current list.
In the Available processes list, find and select the process or processes you want to attach to.
To quickly select a process, type its name or first letter in the Filter processes box.
If you don't know the process name, browse through the list, or see Common debugging scenarios for some common process names.
To find processes running under all user accounts, select the Show processes from all users check box.
If you try to attach to a process owned by an untrusted user account, a security warning dialog box confirmation will appear. For more information, see Security Warning: Attaching to a process owned by an untrusted user can be dangerous. If the following information looks suspicious or you are unsure, do not attach to this process.
In the Attach to field, make sure the type of code you plan to debug is listed. The default Automatic setting works for most app types.
If you are using the Default connection type, you can manually select the type of code you want to attach to. Otherwise, the Select option may be disabled.
To select code types manually:
- Click Select.
- In the Select Code Type dialog box, select Debug these code types. If you experience a failure when you try to attach to a process in the list, you can use the Select Code Type dialog box to help troubleshoot the issue.
- Select OK.
Select Attach.
You can be attached to multiple apps for debugging, but only one app is active in the debugger at a time. You can set the active app in the Visual Studio Debug Location toolbar or Processes window.
In some cases, when you debug in a Remote Desktop (Terminal Services) session, the Available processes list won't display all available processes. If you are running Visual Studio as a user who has a limited user account, the Available processes list won't show processes that are running in Session 0. Session 0 is used for services and other server processes, including w3wp.exe. You can solve the problem by running Visual Studio under an administrator account or by running Visual Studio from the server console instead of a Terminal Services session.
If neither of those workarounds is possible, a third option is to attach to the process by running vsjitdebugger.exe -p from the Windows command line. You can determine the process ID using tlist.exe. To obtain tlist.exe, download and install Debugging Tools for Windows, available at WDK and WinDbg downloads.
If you're publishing to Azure App Service (Windows), see Debugging Azure App Services for instructions.
If you're publishing to Azure App Service (Windows), you'll find the Attach Debugger option under the . menu under Hosting in the publish profile. Visual Studio attempts to attach the remote debugger to the instance of Azure App Service (Windows) that the profile is publishing to.
Attach to a process running on a Docker container
Reattach to a process
You can quickly reattach to processes that you were previously attached to by choosing Debug > Reattach to Process (Shift+Alt+P). When you choose this command, the debugger will immediately try to attach to the last processes you attached to by first attempting to match the previous process ID and if that fails, by matching to the previous process name. If no matches are found, or if several processes have the same name, the Attach to Process dialog box will open so you can select the correct process.
The Reattach to Process command is available starting in Visual Studio 2017.
Common debugging scenarios
To help you determine whether to use Attach to Process and what process to attach to, the following table shows a few common debugging scenarios, with links to more instructions where available. (The list is not exhaustive.)
For some app types, like Universal Windows App (UWP) apps, you don't attach directly to a process name, but use the Debug Installed App Package menu option in Visual Studio instead (see table).
For the debugger to attach to code written in C++, the code needs to emit DebuggableAttribute . You can add this to your code automatically by linking with the /ASSEMBLYDEBUG linker option.
For client-side script debugging, script debugging must be enabled in the browser. For debugging client-side script on Chrome, choose JavaScript (Chrome) or JavaScript (Microsoft Edge - Chromium) as the code type, and depending on your app type, you may need to close all Chrome instances and start the browser in debugging mode (type chrome.exe --remote-debugging-port=9222 from a command line). In earlier versions of Visual Studio, the script debugger for Chrome was Web kit.
To quickly select a running process to attach to, in Visual Studio, type Ctrl+Alt+P, and then type the first letter of the process name.
Use debugger features
To use the full features of the Visual Studio debugger (like hitting breakpoints) when attaching to a process, the app must exactly match your local source and symbols. That is, the debugger must be able to load the correct symbol (.pdb) files. By default, this requires a debug build.
For remote debugging scenarios, you must have the source code (or a copy of the source code) already open in Visual Studio. The compiled app binaries on the remote machine must come from the same build as on the local machine.
In some local debugging scenarios, you can debug in Visual Studio with no access to the source if the correct symbol files are present with the app. By default, this requires a debug build. For more information, see Specify symbol and source files.
Troubleshoot attach errors
In some scenarios, the debugger may need help to correctly identify the type of code to debug. If the connection values are set correctly (you can view the correct process in the Available processes list), but the debugger fails to attach, try to select the most appropriate connection type in the Connection type list, which may be required, for example, if you are debugging a Linux or Python app. If you are using the Default connection type, then you can alternatively select the specific type of code to connect to, as described later in this section.
When the debugger attaches to a running process, the process can contain one or more types of code. The code types the debugger can attach to are displayed and selected in the Select Code Type dialog box.
Sometimes, the debugger can successfully attach to one code type, but not to another code type. Typically, this occurs when:
- You try to attach to a process that is running on a remote computer. The remote computer might have remote debugging components installed for some code types but not for others.
- You try to attach to two or more processes for direct database debugging. SQL debugging supports attaching to a single process only.
If the debugger is able to attach to some, but not all, code types, you see a message identifying which types failed to attach.
If the debugger successfully attaches to at least one code type, you can proceed to debug the process. You will be able to debug only the code types that were successfully attached. The unattached code in the process will still run, but you won't be able to set breakpoints, view data, or perform other debugging operations on that code.
If you want more specific information about why the debugger failed to attach to a code type, try to reattach to only that code type.
To obtain specific information about why a code type failed to attach:
Detach from the process. On the Debug menu, select Detach All.
Reattach to the process, selecting only the code type that failed to attach.
In the Attach to Process dialog box, select the process in the Available processes list.
Select Select.
In the Select Code Type dialog box, select Debug these code types and the code type that failed to attach. Deselect the other code types.
Select OK.
In the Attach to Process dialog box, select Attach.
This time, the attach will fail completely, and you will get a specific error message.
Читайте также: