Connettendo al programma
Dopo aver registrato programmi con la porta appropriata, è necessario connettere il debugger a un programma che si desidera eseguire il debug.
Scegliendo la connessione
Esistono tre modalità in cui l'amministratore (SDM) di debug della sessione tenta di connettersi al programma sottoposto a debug.
Per programmi che vengono avviati dal motore di debug dal IDebugEngineLaunch2:: LaunchSuspended metodo (tipico dei linguaggi interpretati, ad esempio, lo SDM ottiene IDebugProgramNodeAttach2 l'interfaccia IDebugProgramNode2 dall'oggetto associato al programma collegato a. Se lo SDM possibile ottenere l'interfaccia di IDebugProgramNodeAttach2 , lo SDM quindi chiama IDebugProgramNodeAttach2:: OnAttach il metodo. Il metodo di IDebugProgramNodeAttach2::OnAttach restituisce S_OK per indicare che non è collegato il programma e che altri tentativi possono essere eseguiti per connettere il programma.
Se lo SDM possibile ottenere IDebugProgramEx2 l'interfaccia dal programma collegato a, lo SDM chiama IDebugProgramEx2:: Connessione il metodo. Questo approccio consiste in genere nei programmi che sono stati avviati in modalità remota dal fornitore di porte.
Se il programma non può essere collegato con i metodi di IDebugProgramEx2::Attach o di IDebugProgramNodeAttach2::OnAttach , i caricamenti di SDM il motore di debug (se non è già caricato) chiamando la funzione di CoCreateInstance quindi chiama IDebugEngine2:: Connessione il metodo. Questo approccio consiste in genere nei programmi avviati in locale da un fornitore di porte.
È inoltre possibile che un fornitore di porte personalizzato chiama il metodo di IDebugEngine2::Attach nell'implementazione personalizzata del fornitore di porte del metodo di IDebugProgramEx2::Attach . In genere in questo caso, il fornitore di porte personalizzato avvia il modulo di debug nel computer remoto.
Allegato si ottiene quando l'amministratore (SDM) di debug della sessione chiama IDebugEngine2:: Connessione il metodo.
Se si esegue il DE nello stesso processo dell'applicazione di cui eseguire il debug, sarà necessario implementare i metodi riportati di IDebugProgramNode2seguito:
Dopo che il metodo di IDebugEngine2::Attach viene chiamato, attenersi ai passaggi riportati nell'implementazione del metodo di IDebugEngine2::Attach :
Inviare IDebugEngineCreateEvent2 un oggetto evento a SDM. Per ulteriori informazioni, vedere L'invio di eventi.
Chiamare IDebugProgram2:: GetProgramId il metodo IDebugProgram2 sull'oggetto passato al metodo di IDebugEngine2::Attach .
Viene restituito GUID utilizzata per identificare il programma. GUID deve essere archiviato nell'oggetto che rappresenta il programma locale a DE e deve essere restituito quando il metodo di IDebugProgram2::GetProgramId viene chiamato sull'interfaccia di IDebugProgram2 .
Nota
Se si implementa l'interfaccia di IDebugProgramNodeAttach2 , GUID del programma viene passato al metodo di IDebugProgramNodeAttach2::OnAttach .Questo GUID viene utilizzato per GUID del programma restituito dal metodo di IDebugProgram2::GetProgramId .
Inviare IDebugProgramCreateEvent2 un oggetto evento per notificare lo SDM che l'oggetto locale di IDebugProgram2 è stato creato per rappresentare il programma a DE. Per informazioni dettagliate, vedere L'invio di eventi.
Nota
Si tratta dello stesso oggetto di IDebugProgram2 che sia passato nel metodo di IDebugEngine2::Attach .L'oggetto in precedenza positivo IDebugProgram2 è riconosciuto dalla porta solo ed è un oggetto separato.
Vedere anche
Riferimenti
IDebugEngineLaunch2:: LaunchSuspended
IDebugProgramNodeAttach2:: OnAttach
IDebugProgramEx2:: Connessione