Condividi tramite


Destinazioni in modalità utente live

I metodi per la creazione e il collegamento a processi elencati in questo argomento possono essere utilizzati per il computer locale e per un computer remoto che esegue un server di elaborazione.

È possibile creare un processo in modalità utente usando Crea processo o CreateProcess2, che esegue un determinato comando per creare un processo. Il metodo AttachProcess può essere usato per collegare il motore del debugger a un processo in modalità utente esistente. CreateProcessAndAttach e CreateProcessAndAttach2 creano un nuovo processo in modalità utente e collegarlo a esso o a un altro processo in modalità utente nello stesso computer. Le operazioni di richiestaDEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS, DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS e DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE possono essere usate per impostare alcune delle opzioni predefinite per la creazione di processi.

Nota Il motore non è completamente collegato al processo finché non viene chiamato il metodo WaitForEvent . Solo dopo che il processo ha generato un evento, ad esempio l'evento di creazione del processo, diventa disponibile nella sessione del debugger. Per altri dettagli, vedere Debug di sessione ed esecuzione del modello .

Il metodo GetRunningProcessSystemIds restituirà gli ID processo di tutti i processi in esecuzione nel computer. L'ID del processo di un programma specifico è reperibile usando GetRunningProcessSystemIdByExecutableName. Dato un ID processo, una descrizione del processo viene restituita da GetRunningProcessDescription.

Opzioni processo

Le opzioni di processo determinano parte del comportamento del motore quando è collegato a un processo in modalità utente, incluso se il motore del debugger verrà collegato automaticamente ai processi figlio creati dal processo di destinazione e le operazioni che il motore esegue con i processi di destinazione quando viene chiuso. Per una descrizione delle opzioni del processo , vedere DEBUG_PROCESS_XXX .

È possibile eseguire query sulle opzioni di processo usando GetProcessOptions. Possono essere modificati usando AddProcessOptions, RemoveProcessOptions e SetProcessOptions.

Disconnessione da processi

Esistono tre modi diversi per disconnettere il motore da un processo.

  1. Scollegare. Riprendi tutti i thread nel processo affinché continui a funzionare e non sia più sottoposto a debug. DetachCurrentProcess scollega il motore dal processo corrente e DetachProcesses scollega il motore da tutti i processi. Non tutte le destinazioni supportano lo scollegamento. L'operazione di RequestDEBUG_REQUEST_TARGET_CAN_DETACH può essere usata per verificare se il target supporta il distacco.

  2. Termina. Tentare di terminare il processo. TerminateCurrentProcess terminerà il processo corrente e TerminateProcesses terminerà tutti i processi nella sessione del debugger.

  3. Abbandonare. Rimuovere il processo dall'elenco dei processi di cui viene eseguito il debug. Il sistema operativo considererà comunque il processo come sottoposto a debug e rimarrà sospeso fino a quando un altro debugger non si collega a esso o finché non viene terminato. AbandonCurrentProcess abbandonerà il processo corrente.