Condividi tramite


Riattaccamento all'applicazione di destinazione

Se il debugger si blocca o si arresta in caso contrario, ovvero si arresta l'arresto anomalo, mentre si esegue il debug in modalità utente, è possibile collegare un nuovo debugger al processo esistente.

Nota Questo metodo è supportato solo in Microsoft Windows XP e versioni successive di Windows. Questo metodo non dipende dal fatto che il debugger abbia originariamente creato il processo o collegato a un processo esistente. Questo metodo non dipende dal fatto che sia stata usata l'opzione -pd .

Per riassegnare un debugger a un'applicazione di destinazione esistente, eseguire le operazioni seguenti:

  1. Determinare l'ID processo dell'applicazione di destinazione.

  2. Avviare una nuova istanza di CDB o WinDbg. Usare l'opzione della riga di comando -pe .

    Debugger -pe -p PID 
    

    È anche possibile usare altre opzioni della riga di comando.

    È anche possibile connettersi da un debugger inattivo usando il comando .attach (Attach to Process) insieme all'opzione-e .

  3. Al termine del collegamento, terminare il processo del debugger originale.

  4. Se il processo non risponde correttamente, potrebbe avere un conteggio di sospensione troppo elevato. È possibile usare il comando ~m (Resume Thread) per ridurre il numero di sospensioni. Per altre informazioni sui conteggi di sospensione, vedere Controllo dei processi e dei thread.

Se il debugger originale è ancora operativo correttamente, questo metodo potrebbe non funzionare. I due debugger sono in competizione per gli eventi di debug e il sistema operativo Windows non assegna necessariamente tutti gli eventi di debug al nuovo debugger.

Se il debugger originale viene terminato prima di collegare il nuovo debugger, l'applicazione di destinazione viene chiusa anche. Tuttavia, se il debugger collegato all'opzione -pd e quindi termina normalmente, l'applicazione di destinazione continua a essere in esecuzione. In questa situazione, un secondo debugger può connettersi all'applicazione di destinazione senza usare l'opzione -pe .

Se si sta già eseguendo il debug di un processo e si vuole scollegare dal processo, ma lasciarlo bloccato in uno stato di debug, è possibile usare il comando .abandon (Abandon Process). Dopo questo comando, qualsiasi debugger di Windows può riattaccare il processo usando la procedura descritta in questo argomento.