Присоединение к выполняемым процессам с использованием отладчика Visual Studio
Присоединение к выполняющемуся процессу; присоединение к процессу на удаленном компьютере; устранение ошибок присоединения.
Описание
Why debug attached processes?
Attach to a running process
Attach to a process on a remote computer
Troubleshoot attach errors
Зачем отлаживать присоединенные процессы?
Отладчик Visual Studio имеет возможность присоединяться к процессу, выполняющемуся вне Visual Studio. Эту возможность можно использовать в следующих целях.
Для отладки приложений, созданных не в среде Visual Studio.
Для одновременной отладки нескольких процессов. Также можно отлаживать несколько процессов, запустив несколько проектов внутри одного решения.
Для отладки процесса, выполняющегося на удаленном компьютере.
Для отладки DLL-библиотеки, выполняющейся в отдельном процессе, который нельзя запустить из Visual Studio обычным способом, например, службы или библиотеки ISAPI DLL, работающих в IIS).
Для автоматического запуска отладчика при аварийном завершении процесса во время его выполнения вне Visual Studio. Это JIT-отладка.
После присоединения к программе можно использовать команды отладчика, проверять состояние программы и т. д. Дополнительные сведения см. в разделах Отладка одного или нескольких процессов в Visual Studio, Запуск, приостановка, шаг, последовательное выполнение и остановка отладки в Visual Studio и Просмотр данных в отладчике. Возможности проверки программы могут быть ограничены в зависимости от того, была ли программа собрана с отладочной информацией, имеется ли доступ к исходному коду программы, а также отслеживает ли JIT-компилятор среды CLR отладочную информацию.
Примечание C++ |
---|
Чтобы отладчик мог присоединиться к коду на языке C++, код должен предоставлять DebuggableAttribute.Это можно добавить в код автоматически, путем связывания с параметром /ASSEMBLYDEBUG компоновщика. |
Предупреждение
Для присоединения к приложению для Магазина Windows, которое написано на JavaScript, сначала необходимо включить отладку для приложения.См. раздел Attach the debugger в Центре разработчика Windows.
Contents
Присоединение к выполняемому процессу
В меню Отладка выберите команду Присоединить к процессу.
В диалоговом окне Присоединение к процессу найдите программу, к которой требуется присоединиться, в списке Доступные процессы.
Если программа, которую требуется отладить, выполняется на другом компьютере, используйте список Квалификатор, чтобы выбрать или указать удаленный компьютер. Для получения дополнительной информации см. Удаленная отладка и диагностика.
Если процесс выполняется с другой учетной записью пользователя, установите флажок Показать процессы всех пользователей.
Если вы подключены через Подключение к удаленному рабочему столу, установите флажок Показать процессы во всех сеансах .
Убедитесь, что в окне Присоединиться к указан тип кода, который необходимо отладить. Параметр по умолчанию Авто пытается определить тип кода, который нужно отладить. Если автоматическая настройка не подходит:
Нажмите кнопку Выбрать.
В диалоговом окне Выбор типа кода нажмите кнопку Выполнять отладку кода следующих типов и выберите типы для отладки.
Нажмите кнопку ОК.
Нажмите кнопку Присоединить.
Список Доступные процессы отображается автоматически при открытии диалогового окна Процессы. Процессы могут запускаться и останавливаться в фоновом режиме, пока диалоговое окно открыто. Однако содержимое окна не всегда отражает текущее состояние. Можно обновить список в любое время, щелкнув кнопку Обновить, чтобы просмотреть текущий список процессов.
Во время отладки можно подключиться к нескольким программам, но в любой момент времени только одна из них активна в отладчике. Можно выбрать текущую программу в панели инструментов Место отладки или окне Процессы. Дополнительные сведения см. в разделе Практическое руководство: Установка текущей программы.
Примечание
Чтобы отладчик мог присоединиться к управляемому коду, написанному на языке C++/CLI, код должен предоставлять атрибут DebuggableAttribute.Это можно добавить в код автоматически, путем связывания с параметром /ASSEMBLYDEBUG компоновщика.
Если попытаться подключиться к процессу, работающему под управлением ненадежной учетной записи, появится диалоговое окно подтверждения с предупреждением безопасности. Дополнительные сведения см. в разделе Предупреждение безопасности. Присоединение к процессу, который принадлежит пользователю, не являющемуся доверенным, может быть опасным. Если следующие сведения не вызывают доверия, то не следует присоединяться к процессу.
В некоторых случаях при отладке в сеансе удаленного рабочего стола (службы терминалов), список Доступные процессы не отображает все доступные процессы. На Windows Server 2003 или более поздних версиях при работе с Visual Studio в качестве пользователя с ограниченным доступом список Доступные процессы не будет отображать процессы, запущенные в сеансе 0, который используется для служб и других серверных процессов, включая W3wp.exe. Можно устранить эту проблему, запустив Visual Studio под учетной записью администратора или запустив Visual Studio с консоли сервера вместо сеанса служб терминалов. Если ни один из этих обходных путей использовать невозможно, третий вариант — присоединение к процессу путем запуска vsjitdebugger.exe -p ProcessId из командной строки Windows. Можно определить идентификатор процесса с помощью Tlist.exe. Чтобы получить файл tlist.exe, загрузите и установите средства отладки для Windows, которые доступны на странице https://go.microsoft.com/fwlink/?LinkId=168279.
Contents
Присоединение к процессу на удаленном компьютере
При использовании диалогового окна Присоединение к процессу можно выбрать другой компьютер, который настроен для удаленной отладки. Для получения дополнительной информации см. Настройка Инструментов удаленной отладки в устройстве. После выбора удаленного компьютера можно просмотреть список доступных процессов, запущенных на этом компьютере, и подключиться к одному или нескольким процессам для отладки.
Чтобы выбрать удаленный компьютер:
В диалоговом окне Присоединение к процессу выберите подходящий тип подключения в списке Транспорт. По умолчанию — правильный параметр в большинстве случаев.
Воспользуйтесь списком Квалификатор для выбора имени удаленного компьютера одним из следующих способов:
Введите имя в списке Квалификатор.
Щелкните стрелку раскрывающегося списка Квалификатор и выберите из раскрывающегося списка имя компьютера.
Нажмите кнопку Поиск рядом со списком Квалификатор, чтобы открыть диалоговое окно Выбор подключения к удаленному отладчику. В диалоговом окне Выбор подключения к удаленному отладчику будут перечислены все устройства, присутствующие в локальной подсети, а также устройства, непосредственно подключенные к компьютеру с помощью кабеля Ethernet (если таковые имеются). Щелкните нужный компьютер или устройство, после чего щелкните Выбрать.
Параметр Транспорт хранится между сеансами отладки. Параметр Квалификатор хранится между сеансами отладки только в случае успешного подключения отладки с этим квалификатором.
Back to Contents
Contents
Устранение ошибок присоединения
При присоединении отладчика Visual Studio к выполняющемуся процессу этот процесс может содержать один или несколько типов кода. Типы кода, к которым может присоединиться отладчик, отображаются и выбираются в диалоговом окне Выбор типа кода.
Примечание
Для присоединения отладчика к управляемому коду на языке C++ код должен предоставлять DebuggableAttribute.Это можно добавить в код автоматически, путем связывания с параметром /ASSEMBLYDEBUG компоновщика.
Предупреждение
Для присоединения к приложению для Магазина Windows, которое написано на JavaScript, сначала необходимо включить отладку для приложения.См. раздел Attach the debugger в Центре разработчика Windows.
Иногда отладчик может успешно присоединяться к одному типу кода, но не к другому. Такое может происходить при попытке присоединения к процессу, выполняющемуся на удаленном компьютере. На удаленном компьютере для одних типов кода могут иметься компоненты удаленной отладки, а для других — нет. Такое также может происходить при попытке присоединиться к двум или более процессам для прямой отладки базы данных. Отладка SQL поддерживает присоединение только к одному процессу.
Если отладчик может присоединиться не ко всем типам кода, то будет отображено сообщение, идентифицирующее типы, к которым присоединиться не удалось.
Если отладчик успешно подключается хотя бы к одному типу кода, то можно приступать к отладке процесса. Но отлаживать можно будет только те типы кода, к которым удалось подсоединиться. В приведенном выше сообщении указано, что не удалось присоединиться к типу кода скриптов. Поэтому проводить отладку кода скриптов в данном процессе не удастся. Код скриптов в этом процессе будет выполняться, но задавать в этом сценарии точки останова, просматривать данные и выполнять другие операции отладки не удастся.
Если нужны более конкретные сведения о том, почему отладчику не удалось присоединиться к некоторому типу кода, можно попытаться повторно присоединиться только к этому типу кода.
Чтобы получить подробные сведения о том, почему не удалось присоединиться к типу кода
Отключитесь от процесса. В меню Отладка выберите команду Отсоединить все.
Вновь подключитесь к процессу, выбрав единственный тип кода.
В диалоговом окне Присоединение к процессу выберите процесс в списке Доступные процессы.
Нажмите кнопку Выбрать.
В диалоговом окне Выбор типа кода выберите Выполнять отладку кода следующих типов и выберите тип кода, к которому не удалось присоединиться. Отмените выбор всех остальных типов кода.
Нажмите кнопку ОК. Диалоговое окно Выбор типа кода будет закрыто.
В диалоговом окне Присоединение к процессу нажмите Присоединиться.
На этот раз присоединение не пройдет полностью, и будет выдано сообщение о конкретной ошибке.
Back to Contents
См. также
Основные понятия
Отладка одного или нескольких процессов в Visual Studio