Поделиться через


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

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

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

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

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

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

    Debugger -pe -p PID 
    

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

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

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

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

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

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

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