Присоединение к процессу Visual Studio, что это такое

Обновлено: 20.11.2024

Отладчик Visual Studio может автоматически запускаться и присоединяться к сервисному процессу при вызове метода System.Diagnostics.Debugger.Launch(). Поскольку этот подход требует меньше работы, настоятельно рекомендуется использовать его для отладки вашего расширения, если ваш сервер и IDE установлены на одном компьютере.

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

Запустите Visual Studio от имени администратора и откройте проект SOE или SOI.

Поместите следующую строку кода в качестве первой строки вашей функции Init() SOE или SOI:

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

Создайте проект в режиме отладки. Не закрывайте проект при выполнении остальных шагов.

Разверните обновленный файл .soe в ArcGIS Server Manager и включите расширение с сервисом.

После перезапуска службы вызывается метод System.Diagnostics.Debugger.Launch(), который активирует отладчик Visual Studio.

Обратите внимание, что для общих экземпляров запуск службы не приведет к срабатыванию метода System.Diagnostics.Debugger.Launch(). После запуска службы вы должны отправить запросы, которые будут проходить через расширение, чтобы активировать метод расширения Init() и метод System.Diagnostics.Debugger.Launch() (см. подробнее жизненный цикл расширений, использующих общие экземпляры). Дополнительные сведения об использовании расширений с общими экземплярами см. в разделе Работа с общими экземплярами.

Следующее диалоговое окно Just-In-Time Debugger Visual Studio откроется автоматически.

Нажмите Да, отладить ArcSOC.exe.

Примечание. Если вы не видите приглашение отладчика Just-In-Time, убедитесь, что вы выбрали вариант отладчика Just-In-Time при установке Visual Studio.

Выберите проект для отладки и нажмите OK.

Затем нажмите «Присоединить», когда появится диалоговое окно «Прикрепить предупреждение системы безопасности».

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

Отладчик мгновенно запускается и автоматически приостанавливается в System.Diagnostics.Debugger.Launch(), и теперь вы можете отлаживать функцию Init().

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

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

Вы можете подключить отладчик Visual Studio к работающему процессу на локальном или удаленном компьютере. После запуска процесса выберите «Отладка» > «Присоединить к процессу» или нажмите Ctrl+Alt+p в Visual Studio и используйте диалоговое окно «Присоединить к процессу», чтобы присоединить отладчик к процессу.

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

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

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

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

Чтобы присоединиться к процессу на локальном компьютере:

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

Проверьте тип подключения.

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

Задайте в качестве цели подключения имя вашего локального компьютера.

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

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

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

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

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

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

Чтобы выбрать типы кодов вручную:

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

Выберите Прикрепить.

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

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

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

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

Чтобы подключиться к запущенному процессу на удаленном компьютере:

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

Проверьте тип подключения.

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

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

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

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

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

Если не удается подключиться с использованием имени удаленного компьютера, попробуйте использовать 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. Другие назначения портов удаленного отладчика см. в разделе Назначение портов удаленного отладчика.

Нажмите кнопку «Найти» рядом с полем «Цель подключения», чтобы открыть диалоговое окно «Удаленные подключения». В диалоговом окне «Удаленные подключения» перечислены все устройства, которые находятся в вашей локальной подсети или напрямую подключены к вашему компьютеру. Возможно, вам потребуется открыть UDP-порт 3702 на сервере для обнаружения удаленных устройств.Выберите нужный компьютер или устройство и нажмите «Выбрать».

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

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

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

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

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

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

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

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

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

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

Чтобы выбрать типы кодов вручную:

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

Выберите Прикрепить.

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

В некоторых случаях при отладке в сеансе удаленного рабочего стола (службы терминалов) в списке доступных процессов не будут отображаться все доступные процессы. Если вы используете Visual Studio от имени пользователя с ограниченной учетной записью, в списке Доступные процессы не будут отображаться процессы, запущенные в сеансе 0. Сеанс 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). Когда вы выберете эту команду, отладчик немедленно попытается подключиться к последним процессам, к которым вы присоединились, сначала пытаясь сопоставить идентификатор предыдущего процесса, а если это не удается, сопоставив имя предыдущего процесса. Если совпадений не найдено или несколько процессов имеют одинаковое имя, откроется диалоговое окно «Присоединить к процессу», в котором можно выбрать правильный процесс.

Команда Reattach to Process доступна, начиная с 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 к пулам веб-приложений, службам Windows и другим процессам.

Это расширение дает вам возможность искать процессы, а затем присоединяться к ним. Он автоматически сохраняет выбранные процессы между перезапусками Visual Studio. Вы можете легко найти конкретные процессы пула приложений IIS и подключиться к ним. Расширение имеет сочетание клавиш для прикрепления, по умолчанию это Ctrl+Shift+Alt+F5. Вы можете подключиться к нескольким процессам одновременно. Если вы веб-разработчик, он у вас должен быть.

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

Расширение поддерживает нестандартные темы (например, Dark Theme):

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

Расширение поддерживает сервер Visual Studio Development (Cassini) и IISExpress. Для сервера разработки Visual Studio в скобках отображается номер порта. Для IISExpress имя сайта отображается в скобках.

Расширение использует WMI для получения подробной информации IIS. Вы можете использовать WBEMTest.exe, чтобы убедиться, что у вас есть соответствующие разрешения.

Вот несколько советов по доступу к WMI:

  • Попробуйте запустить Visual Studio в режиме администратора.
  • Попробуйте отключить UAC
  • Если отключение UAC помогает, попробуйте добавить в реестр следующее:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System DWORD (32 бит): LocalAccountTokenFilterPolicy = 1

Расширение добавляет две кнопки на стандартную панель инструментов:

  • Первая кнопка "Smart Start" запускает приложение без отладки. Для веб-приложений, использующих IISExpress, кнопка не открывает новую страницу, в отличие от встроенной команды Visual Studio "Начать без отладки".
  • Вторая кнопка, "Прикрепить выборки интеллектуальной отладки", прикрепляет выбранные процессы.

Расширение также поддерживает базовую удаленную отладку:

Зарегистрированный пользователь должен иметь доступ к удаленному компьютеру. При желании вы можете указать имя пользователя и пароль.

В этом пятиминутном учебном пособии вы познакомитесь с основными функциями Entrian Attach с помощью встроенного учебного пособия.

Entrian Attach поставляется с некоторыми демонстрационными приложениями, так что вы можете попробовать его без необходимости настраивать что-то для своих собственных приложений. Меню Tutorial настраивает все за вас, чтобы вы могли увидеть, как все это работает:

Начните с настройки Visual Studio для подключения к учебным приложениям: щелкните Инструменты / Entrian Attach: Configuration. а затем Tutorial/Добавить обучающие приложения в список и установить контрольные точки. Это настраивает Entrian Attach для подключения к демонстрационным приложениям, загружает исходный код для этих приложений и устанавливает некоторые точки останова в исходном коде:

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

1. Присоединение к процессу по мере его запуска

Нажмите Tutorial / Start Windows Explorer в папке обучающих приложений, затем из Windows Explorer запустите TutorialManaged.exe . Вы увидите, что Visual Studio подключается к новому процессу и срабатывает точка останова. Нажмите OK в диалоговом окне Entrian Attach, если оно все еще отображается, затем нажмите F5, чтобы продолжить и оставить приложение запущенным.

2. Автоматическое присоединение к дочерним процессам

TutorialManaged.exe может запускать дочерний процесс TutorialNative.exe. Entrian Attach настроен на подключение к TutorialNative.exe, только если он является дочерним элементом отлаживаемого процесса:

В управляемом приложении Tutorial нажмите кнопку TutorialNative.exe, и отладчик подключится к дочернему процессу. Нажмите F5/Продолжить и закройте дочернее приложение.

Если вы запустите тот же файл TutorialNative.exe из проводника Windows, Visual Studio не подключится, поскольку он не является дочерним элементом отлаживаемого вами процесса.

(Почему это кажется обратным?Почему вы не можете просто сказать, что хотите отлаживать любой потомок TutorialManaged.exe? Ответ заключается в том, что механизм Windows для подключения отладчика при запуске процессов требует имени исполняемого файла для подключения. Вот почему вам нужно указать имя дочернего процесса.)

3. Условное присоединение

Запустите его с помощью кнопки TutorialSwitched.exe /switch, и отладчик подключится (нажмите F5 и закройте приложение). Запустите TutorialSwitched.exe из проводника Windows, и отладчик не подключится.

4. "Прикрепить сейчас"

Убедитесь, что у вас запущено одно или несколько демонстрационных приложений, но не в отладчике (нажмите "Отладка/Отключение всех" в меню Visual Studio).

Теперь щелкните Инструменты / Entrian Attach: Attach Now (или нажмите Ctrl+E, Ctrl+A ), и вы подключитесь к запущенным процессам.

Что дальше?

На этом краткий обзор Entrian Attach заканчивается. Теперь вы можете вернуться в диалоговое окно «Конфигурация», где вы можете дополнительно изучить параметры и настроить свои собственные приложения. Щелкните Учебник/Удалить обучающие приложения и их точки останова в какой-то момент, чтобы удалить учебные приложения и точки останова.

Некоторые функции, которые не рассматриваются в этом руководстве:

  • Подстановочные знаки: вместо конкретного имени исполняемого файла вы можете указать папку и шаблон подстановочного знака, например. C:\Project\*.exe .
  • Присоединиться к процессам, принадлежащим только определенному пользователю.
  • Присоединиться к запущенным процессам с определенным заголовком окна.
  • Присоединиться к заданному исполняемому файлу только один раз с помощью "Присоединить при запуске процесса, когда я еще не отлаживаю его исполняемый файл".
  • Перерыв при запуске процесса: остановка в отладчике до выполнения первой инструкции (только для машинного кода).
  • Отладка веб-сервера: подключение к w3wp.exe (IIS) или iisexpress.exe только для определенных пулов приложений или сайтов.
  • Настройки для каждого решения: Entrian Attach сохраняет разные настройки для каждого решения и позволяет копировать настройки одного решения в другое.
  • Вы можете быстро включить/отключить Entrian Attach с помощью горячих клавиш Ctrl+E, Ctrl+E (или добавив команду EntrianAttachEnableDisable в меню или на панель инструментов).

Entrian Attach делает отладчик Visual Studio более продуктивным в использовании. и попробуйте сами.

Читайте также: