Condividi tramite


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.

  1. 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.

  2. 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.

  3. 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 :

  1. Inviare IDebugEngineCreateEvent2 un oggetto evento a SDM. Per ulteriori informazioni, vedere L'invio di eventi.

  2. 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 .

  3. 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

IDebugProgram2

IDebugProgramCreateEvent2

IDebugProgramNodeAttach2

IDebugProgramNodeAttach2:: OnAttach

IDebugProgramNode2

IDebugProgram2:: GetProgramId

IDebugProgramEx2

IDebugProgramEx2:: Connessione

IDebugEngine2:: Connessione

Concetti

A allegato basato su avvio

L'invio di eventi