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

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

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

    Откроется диалоговое окно "Присоединение к процессу ", в котором перечислены все модули отладки (DEs), установленные на компьютере.

  2. Укажите DES для отладки выбранного процесса, выберите процесс и нажмите кнопку "Присоединить ".

    Пакет отладки запускает сеанс отладки и передает в него список DES. Сеанс отладки, в свою очередь, передает этот список вместе с функцией обратного вызова в выбранный процесс, а затем запрашивает процесс перечисления выполняемых программ.

    Программно в ответ на запрос пользователя пакет отладки создает экземпляр диспетчера отладки сеанса (SDM) и передает в него список выбранных DES. Вместе со списком пакет отладки передает интерфейс IDebugEventCallback2. Пакет отладки передает список DES выбранному процессу путем вызова IDebugProcess2::Attach. Затем SDM вызывает IDebugProcess2::EnumPrograms на порту, чтобы перечислить программы, выполняемые в процессе.

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

    Для повышения эффективности DES, реализованные для совместного использования адресного пространства с SDM, группируются таким образом, чтобы каждый de имеет набор программ, к которым он присоединяется. В этом случае IDebugProcess2 вызывает IDebugEngine2::Attach и передает его массив программ для подключения.

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