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


Присоединение к выполняемым процессам с использованием отладчика 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++

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

Предупреждение

Для присоединения к приложению для Магазина Windows, которое написано на JavaScript, сначала необходимо включить отладку для приложения.См. раздел Attach the debugger в Центре разработчика Windows.

К началуContents

Присоединение к выполняемому процессу

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

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

    1. Если программа, которую требуется отладить, выполняется на другом компьютере, используйте список Квалификатор, чтобы выбрать или указать удаленный компьютер. Для получения дополнительной информации см. Удаленная отладка и диагностика.

    2. Если процесс выполняется с другой учетной записью пользователя, установите флажок Показать процессы всех пользователей.

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

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

    1. Нажмите кнопку Выбрать.

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

    3. Нажмите кнопку ОК.

  4. Нажмите кнопку Присоединить.

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

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

    Примечание

    Чтобы отладчик мог присоединиться к управляемому коду, написанному на языке 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

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

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

Чтобы выбрать удаленный компьютер:

  1. В диалоговом окне Присоединение к процессу выберите подходящий тип подключения в списке Транспорт. По умолчанию — правильный параметр в большинстве случаев.

  2. Воспользуйтесь списком Квалификатор для выбора имени удаленного компьютера одним из следующих способов:

    1. Введите имя в списке Квалификатор.

    2. Щелкните стрелку раскрывающегося списка Квалификатор и выберите из раскрывающегося списка имя компьютера.

    3. Нажмите кнопку Поиск рядом со списком Квалификатор, чтобы открыть диалоговое окно Выбор подключения к удаленному отладчику. В диалоговом окне Выбор подключения к удаленному отладчику будут перечислены все устройства, присутствующие в локальной подсети, а также устройства, непосредственно подключенные к компьютеру с помощью кабеля Ethernet (если таковые имеются). Щелкните нужный компьютер или устройство, после чего щелкните Выбрать.

    Параметр Транспорт хранится между сеансами отладки. Параметр Квалификатор хранится между сеансами отладки только в случае успешного подключения отладки с этим квалификатором.

Back to Contents

К началуContents

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

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

Примечание

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

Предупреждение

Для присоединения к приложению для Магазина Windows, которое написано на JavaScript, сначала необходимо включить отладку для приложения.См. раздел Attach the debugger в Центре разработчика Windows.

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

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

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

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

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

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

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

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

    2. Нажмите кнопку Выбрать.

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

    4. Нажмите кнопку ОК. Диалоговое окно Выбор типа кода будет закрыто.

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

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

Back to Contents

См. также

Основные понятия

Отладка одного или нескольких процессов в Visual Studio

JIT-отладка в Visual Studio

Другие ресурсы

Удаленная отладка и диагностика