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