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


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

Отладчик Visual Studio имеет возможность присоединяться к процессу, выполняющемуся вне Visual Studio.Эту возможность можно использовать в следующих целях.

  • Для отладки приложений, созданных не в среде Visual Studio.

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

  • Для отладки процесса, выполняющегося на удаленном компьютере.

  • Для отладки DLL-библиотеки, выполняющейся в отдельном процессе, который нельзя запустить из Visual Studio обычным способом, например, службы или библиотеки ISAPI DLL, работающих в IIS).

  • Для автоматического запуска отладчика при аварийном завершении процесса во время его выполнения вне Visual Studio.Это JIT-отладка.

После присоединения к программе можно использовать команды отладчика, проверять состояние программы и т. д.Дополнительные сведения см. в разделах Запуск, приостановка и остановка отладчика Visual Studio, а также навигация по отладчику и Просмотр данных в отладчике.Возможности проверки программы могут быть ограничены в зависимости от того, была ли программа создана со сведениями об отладке, имеется ли доступ к исходному коду программы, а также отслеживает ли JIT-компилятор среды CLR сведения об отладке.

Примечание C++Примечание C++

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

Предупреждающее замечаниеВнимание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Все команды выполнения меню Отладка влияют на текущую программу.Можно прервать выполнение любой отлаживаемой программы из диалогового окна Процессы или прервать выполнение любой присоединенной программы из меню Отладка.Дополнительные сведения см. в разделе [NIB] 12/13 Практическое руководство. Прерывание выполнения.

    ПримечаниеПримечание

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

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

    В некоторых случаях при отладке в сеансе удаленного рабочего стола (службы терминалов), список Доступные процессы не отображает все доступные процессы.На Windows Server 2003 или более поздних версиях при работе с Visual Studio в качестве пользователя с ограниченным доступом список Доступные процессы не будет отображать процессы, запущенные в сеансе 0, который используется для служб и других серверных процессов, включая W3wp.exe.Можно устранить эту проблему, запустив Visual Studio под учетной записью администратора или запустив Visual Studio с консоли сервера вместо сеанса служб терминалов.Если ни один из этих методов решения проблемы не возможен, третий вариант — присоединиться к процессу, запустив vsjitdebugger.exe -p ProcessId из командной строки Windows.Можно определить идентификатор процесса с помощью Tlist.exe.Чтобы получить tlist.exe, загрузите и установите Debugging Tools for Windows, которые доступны по адресу https://go.microsoft.com/fwlink/?LinkId=168279.

Выберите удаленный компьютер

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

Выбор удаленного компьютера.

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

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

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

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

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

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

Как исправлять ошибки вложения

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

ПримечаниеПримечание

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

Предупреждающее замечаниеВнимание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Ссылки

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

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

Безопасность отладчика

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

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