Запуск программы

Пользователи, которые хотят отладить программу, могут нажать клавишу F5 , чтобы запустить отладчик из интегрированной среды разработки. Это начинает ряд событий, которые в конечном итоге приводят к подключению интегрированной среды разработки к подсистеме отладки (DE), которая, в свою очередь, подключена или подключена к программе следующим образом:

  1. Интегрированная среда разработки сначала вызывает пакет проекта для получения параметров активной отладки проекта решения. Эти параметры включают начальный каталог, переменные среды, порт, в котором будет выполняться программа, и de, используемое для создания программы, если указано. Эти параметры передаются в пакет отладки.

  2. Если указан de, de вызывает операционную систему для запуска программы. В результате запуска программы среда выполнения программы загружается. Например, если программа написана в MSIL, среда CLR будет вызвана для запуска программы.

    –или–

    Если de не указан, порт вызывает операционную систему для запуска программы, что приводит к загрузке среды выполнения программы.

    Примечание.

    Если de используется для запуска программы, скорее всего, тот же DE будет присоединен к программе.

  3. В зависимости от того, запускается ли de или порт, среда DE или среда выполнения затем создает описание программы или узел, а также уведомляет порт, который выполняется программой.

    Примечание.

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

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

    Программно, когда пользователь сначала нажимает клавишу F5, пакет отладки Visual Studio вызывает пакет проекта (связанный с типом запускаемой программы) через DebugLaunch метод, который, в свою очередь, заполняет VsDebugTargetInfo2 структуру активными параметрами отладки проекта решения. Эта структура передается обратно в пакет отладки через вызов LaunchDebugTargets2 метода. Затем пакет отладки создает экземпляр диспетчера отладки сеанса (SDM), который запускает программу отладки и все связанные подсистемы отладки.

    Одним из аргументов, передаваемых В SDM, является GUID DE, который будет использоваться для запуска программы.

    Если идентификатор GUID DE не GUID_NULLявляется, SDM совместно создает de, а затем вызывает его метод LaunchSuspended для запуска программы. Например, если программа написана в машинном коде, вероятно, IDebugEngineLaunch2::LaunchSuspended вызовет CreateProcess и ResumeThread (Функции Win32) для запуска программы.

    В результате запуска программы загружается среда выполнения программы. Затем среда DE или среда выполнения создает интерфейс IDebugProgramNode2 , чтобы описать программу и передает этот интерфейс в AddProgramNode , чтобы уведомить порт о запуске программы.

    Если GUID_NULL передается, порт запускает программу. После запуска программы среда выполнения создает IDebugProgramNode2 интерфейс для описания программы и передает его IDebugPortNotify2::AddProgramNodeв . Это уведомляет порт о том, что программа запущена. Затем SDM подключает модуль отладки к работающей программе.

В этом разделе

Уведомление порта объясняет, что происходит после запуска программы, а порт уведомляется.

Присоединение после запуска документов, когда сеанс отладки готов к подключению DE к программе.