Повторное подключение к целевому приложению

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

Примечание Этот метод поддерживается только в Microsoft Windows XP и более поздних версиях Windows. Этот метод не зависит от того, был ли отладчик изначально создан процесс или присоединен к существующему процессу. Этот метод не зависит от того, использовался ли параметр -pd .

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

  1. Определите идентификатор процесса целевого приложения.

  2. Запустите новый экземпляр CDB или WinDbg. Используйте параметр командной строки -pe .

    Debugger -pe -p PID 
    

    Можно также использовать другие параметры командной строки.

    Вы также можете подключиться из неактивного отладчика с помощью команды .attach (Присоединить к процессу) вместе с параметром -e .

  3. После завершения присоединения завершите исходный процесс отладчика.

  4. Если процесс не отвечает должным образом, может быть слишком большое число приостановок. Вы можете использовать команду ~m (Возобновить поток), чтобы уменьшить число приостановок. Дополнительные сведения о количестве приостановок см. в разделе Управление процессами и потоками.

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

Если исходный отладчик завершается до подключения нового отладчика, целевое приложение также закрывается. (Однако если отладчик подключен с параметром -pd , а затем завершает работу в обычном режиме, целевое приложение продолжает работать. В этом случае второй отладчик может подключиться к целевому приложению без использования параметра -pe .)

Если вы уже выполняете отладку процесса и хотите отсоединиться от него, но оставить его в состоянии отладки, можно использовать команду .abandon (Abandon Process). После выполнения этой команды любой отладчик Windows может повторно подключиться к процессу с помощью процедуры, описанной в этом разделе.