Присоединение к процессу visual studio что это
Перейти к содержимому

Присоединение к процессу visual studio что это

  • автор:

Присоединение и отключение программы

Присоединение отладчика требует отправки правильной последовательности методов и событий с соответствующими атрибутами.

Последовательность методов и событий

  1. Диспетчер отладки сеанса вызывает метод OnAttach . На основе модели IDebugProgramNodeAttach2::OnAttach процесса обработчика отладки (DE) метод возвращает один из следующих методов, который определяет, что происходит дальше. Если S_FALSE возвращается, подсистема отладки успешно подключена к программе. В противном случае метод Attach вызывается для завершения процесса присоединения. Если S_OK возвращается, de de должен быть загружен в том же процессе, что и SDM. SDM выполняет следующие задачи:
    1. Вызывает GetEngineInfo , чтобы получить сведения о подсистеме DE.
    2. Совместно создает DE.
    3. Подключение вызовов.

    Связанный контент

    В Visual Studio 2022 вместо запуска программы — присоединение, что делать?

    Doctor Strange Мыслитель (7546) hehceheh8eq ffeewrfwqerfwqefewq, 2021 нет версии, откатись на предыдущую версию 2022

    Alex AleksandrovichУченик (135) 1 год назад

    Мне как-то скинули код и я по ошибке сперва открыл просто main.cpp и соответственно выскакивало такое окно, потому что проект по сути не был создан.
    У меня решилась проблема так: скопировал код в блокнот с main, создал новый проект для консоли и уже туда вставил. Скомпилировалось дальше обычно. VS2022, ес чё

    Doctor Strange Мыслитель (7546) Alex Aleksandrovich, а я удалил две папки дотнета и запустил восстановление студии и все работает

    Подключение непосредственно к программе

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

    1. В интегрированной среде разработки выберите команду «Отладка процессов » в меню «Сервис «. Откроется диалоговое окно Процессы.
    2. Выберите процесс и нажмите кнопку «Присоединить «. Откроется диалоговое окно «Присоединение к процессу «, в котором перечислены все модули отладки (DEs), установленные на компьютере.
    3. Укажите DES для отладки выбранного процесса и нажмите кнопку «ОК«. Пакет отладки запускает сеанс отладки и передает в него список DES. Сеанс отладки, в свою очередь, передает этот список вместе с функцией обратного вызова в выбранный процесс, а затем запрашивает процесс перечисления выполняемых программ. Программно в ответ на запрос пользователя пакет отладки создает экземпляр диспетчера отладки сеанса (SDM) и передает в него список выбранных DES. Вместе со списком пакет отладки передает интерфейс IDebugEventCallback2 . Пакет отладки передает список DES выбранному процессу путем вызова IDebugProcess2::Attach. Затем SDM вызывает IDebugProcess2::EnumPrograms на порту, чтобы перечислить программы, выполняемые в процессе. С этого момента каждый модуль отладки подключается к программе точно так же, как подробно описано в приложении присоединения после запуска с двумя исключениями. Для повышения эффективности DES, реализованные для совместного использования адресного пространства с SDM, группируются таким образом, чтобы каждый de имеет набор программ, к которым он присоединяется. В этом случае IDebugProcess2 вызывает IDebugEngine2::Attach и передает его массив программ для подключения. Второе исключение заключается в том, что события запуска, отправленные DE, присоединенные к программе, которая уже запущена, обычно не включают событие точки входа.

    Связанный контент

    • Отправка событий запуска после запуска
    • Задачи отладки

    Дополнительные ресурсы

    Значок отказа согласно Закону Калифорнии о защите конфиденциальности потребителей (CCPA)

    Присоединение к программе

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

    Выбор способа присоединения

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

    1. Для программ, запускаемых подсистемой отладки с помощью метода LaunchSuspended (типичный для интерпретированных языков, например), SDM получает интерфейс IDebugProgramNodeAttach2 из объекта IDebugProgramNode2, связанного с присоединенной программой. Если SDM может получить IDebugProgramNodeAttach2 интерфейс, SDM вызывает метод OnAttach . Метод IDebugProgramNodeAttach2::OnAttach возвращается S_OK , чтобы указать, что он не был присоединен к программе и что другие попытки можно выполнить для присоединения к программе.
    2. Если SDM может получить интерфейс IDebugProgramEx2 из подключенной программы, SDM вызывает метод Attach . Этот подход является типичным для программ, которые были запущены удаленно поставщиком портов.
    3. Если программа не может быть подключена через IDebugProgramNodeAttach2::OnAttach метод или IDebugProgramEx2::Attach методы, SDM загружает подсистему отладки (если она еще не загружена), вызывая CoCreateInstance функцию, а затем вызывает метод Attach . Этот подход является типичным для программ, запускаемых локально поставщиком портов. Кроме того, поставщик пользовательского порта может вызвать IDebugEngine2::Attach метод в реализации поставщика пользовательского IDebugProgramEx2::Attach порта. Как правило, в этом случае поставщик пользовательского порта запускает подсистему отладки на удаленном компьютере. Вложение достигается, когда диспетчер отладки сеанса вызывает метод Attach . Если вы запускаете de de в том же процессе, что и приложение для отладки, необходимо реализовать следующие методы IDebugProgramNode2:
    • GetHostName
    • GetHostPid
    • GetProgramName IDebugEngine2::Attach После вызова метода выполните следующие действия в реализации IDebugEngine2::Attach метода:

    Примечание. При реализации IDebugProgramNodeAttach2 интерфейса программа GUID передается методу IDebugProgramNodeAttach2::OnAttach . Используется GUID для возвращаемых методом IDebugProgram2::GetProgramId программ GUID .

    Примечание. Это не тот же IDebugProgram2 объект, который был передан в IDebugEngine2::Attach метод. Ранее переданный IDebugProgram2 объект распознается только портом и является отдельным объектом.

    Связанный контент

    • Вложение на основе запуска
    • Отправка событий
    • LaunchSuspended
    • IDebugProgram2
    • IDebugProgramCreateEvent2
    • IDebugProgramNodeAttach2
    • OnAttach
    • IDebugProgramNode2
    • GetProgramId
    • IDebugProgramEx2
    • Присоединить
    • Присоединить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *