Condividi tramite


Targets

Il motore del debugger supporta il debug di diversi tipi di destinazioni, destinazioni in modalità utente e modalità kernel , destinazioni attive e file di dump di arresto anomalo del sistema e destinazioni locali e remote. Esistono diversi metodi per connettere il motore a questi diversi tipi di destinazioni.

File di dump di arresto anomalo del sistema

I file crash-dump in modalità kernel e modalità kernel vengono aperti con OpenDumpFile. Il motore è anche in grado di creare file di dump da una destinazione con WriteDumpFile2.

Destinazioni live, User-Mode

Il motore del debugger può creare e collegare processi in modalità utente.

La creazione di un processo viene eseguita fornendo una riga di comando e, facoltativamente, una directory e un ambiente iniziali per il nuovo processo. Il motore può quindi connettersi al nuovo processo o mantenere sospeso il nuovo processo mentre si connette a un altro processo. Ad esempio, quando si esegue il debug di un'applicazione costituita sia da un client che da un server, è possibile creare un client in uno stato sospeso e collegarsi a un server già in esecuzione, consentendo l'impostazione dei punti di interruzione del server prima dell'esecuzione del client e provoca le operazioni del server.

Quando si disconnette da un processo, il motore può facoltativamente lasciare il processo in esecuzione normalmente, terminare il processo o abbandonare il processo (lasciandolo sospeso fino a quando un altro debugger non si connette o viene terminato).

È possibile eseguire una query sul motore per ottenere informazioni su tutti i processi in modalità utente in esecuzione nel computer, inclusi l'ID processo e il nome dell'immagine eseguibile usata per avviare il processo. Queste informazioni possono essere usate per individuare un processo di debug.

Destinazioni live, Kernel-Mode

Il metodo AttachKernel connette il motore del debugger a un kernel Windows.

Destinazioni remote

Quando si usa il motore del debugger per eseguire il debug in remoto, esistono potenzialmente due passaggi aggiuntivi:

  1. Connettersi al motore host. Se il motore host non è l'istanza del motore locale, usare DebugConnect per creare un oggetto client connesso al motore host.

  2. Connettere il motore host al server di elaborazione o al server di connessione kernel. Se il motore host non si connette direttamente alla destinazione, deve connettersi a un server di elaborazione o a un server di connessione kernel che esegue questa operazione.

Ora il client può indicare al motore host di acquisire una destinazione tramite il server di elaborazione o il server di connessione kernel.

Acquisizione di destinazioni

Quando si acquisisce una destinazione, l'acquisizione della destinazione non viene completata fino a quando la destinazione non genera un evento. Questo significa in genere chiamare prima un metodo per collegare il debugger alla destinazione, quindi chiamare WaitForEvent per consentire alla destinazione di generare un evento. Ciò vale ancora quando la destinazione è un file di dump di arresto anomalo del sistema, perché archivia sempre un evento, in genere l'evento che ha causato la creazione del file di dump.

Informazioni aggiuntive

Per informazioni dettagliate sul collegamento alle destinazioni, vedere Connessione alle destinazioni.