Condividi tramite


Controllo dell'esecuzione

Il motore (DE) di debug in genere invia uno dei seguenti eventi come ultimo evento startup:

  • L'evento del punto di ingresso, se connessione a un programma appena avviato

  • L'evento completo di caricamento, se connessione a un programma già in esecuzione

Entrambi questi eventi sono interrompendo gli eventi, quindi attende di DE una risposta dall'utilizzo dell'IDE. Per ulteriori informazioni, vedere modalità operative.

Arrestare evento

Quando un evento bloccato viene inviato alla sessione di debug:

  1. Il programma e il thread che contengono il puntatore all'istruzione corrente possono essere ottenuti dall'interfaccia eventi.

  2. L'ide determina che presentano file di codice sorgente e posizione, che visualizza evidenziato nell'editor.

  3. La sessione di debug in genere risponde al primo evento bloccato chiamando il metodo di continuare del programma.

  4. Il programma quindi viene eseguito fino a che non verrà incontrato un termine bloccato, come raggiungere un punto di interruzione, nel qual caso il DE invia un evento del punto di interruzione alla sessione di debug. L'evento del punto di interruzione è ancora un evento bloccato e attende di DE una risposta dell'utente.

  5. Se si sceglie di eseguire istruzioni in, in, o da una funzione, l'ide richiesto la sessione di debug a chiamare il metodo di Step del programma, passando l'unità del passaggio (istruzione, l'istruzione, o riga) e il tipo di passaggio-che è, se l'esecuzione in, in, o dalla funzione. Quando il passaggio è completo, il DE invia un evento completo del passaggio alla sessione di debug, che è un evento bloccato.

    In alternativa

    Se si sceglie di continuare a eseguire il puntatore all'istruzione corrente, l'ide richiesto la sessione di debug a chiamare il metodo di di esecuzione del programma. Il programma verrà ripresa fino a quando incontra la condizione bloccato seguente.

    In alternativa

    Se la sessione di debug deve ignorare un evento bloccato particolare, la sessione di debug chiama il metodo di continuare del programma. Se il programma sta eseguendo, su, o da una funzione quando ha rilevato la condizione bloccato, quindi continua il passaggio.

A livello di codice, quando il DE rileva una condizione bloccato, invia tali eventi arrestare come IDebugLoadCompleteEvent2 o IDebugEntryPointEvent2 gestione (SDM) di debug della sessione per implementare un'interfaccia di IDebugEventCallback2 . Il DE passes le interfacce di IDebugThread2 e di IDebugProgram2 che rappresentano il programma e il thread che contengono il puntatore all'istruzione corrente. Lo SDM chiama IDebugThread2:: EnumFrameInfo per ottenere lo stack frame superiore e chiama IDebugStackFrame2:: GetDocumentContext per ottenere il contesto del documento associato al puntatore all'istruzione corrente. Questo contesto del documento è in genere un nome file, una riga e un numero di colonne di codice sorgente. L'ide utilizza questi per evidenziare il codice sorgente contenente il puntatore all'istruzione corrente.

Lo SDM in genere risponde al primo evento bloccato chiamando IDebugProgram2:: continuare. Il programma quindi viene eseguito fino a che non verrà incontrato un termine bloccato, come raggiungere un punto di interruzione, nel qual caso il DE invia interfaccia IDebugBreakpointEvent2 a SDM. L'evento del punto di interruzione è ancora un evento bloccato e attende di DE una risposta dell'utente.

Se si sceglie di eseguire istruzioni in, in, o da una funzione, l'ide richiesto lo SDM a chiamare IDebugProgram2:: passaggio, passando STEPUNIT (istruzione, l'istruzione, o riga) e STEPKIND, ovvero, se l'esecuzione in, in, o dalla funzione. Quando il passaggio è completo, il DE invia un'interfaccia di IDebugStepCompleteEvent2 a SDM, che è un evento bloccato.

Se si sceglie di continuare a eseguire il puntatore all'istruzione corrente, l'ide chiede a SDM di chiamare IDebugProgram2:: di esecuzione. Il programma verrà ripresa fino a quando incontra la condizione bloccato seguente.

Se il pacchetto di debug è di ignorare un evento bloccato particolare, il pacchetto di debug chiama lo SDM, che chiama IDebugProgram2:: continuare. Se il programma sta eseguendo, su, o da una funzione quando ha rilevato la condizione bloccato, quindi continua il passaggio. Ciò implica che il programma di gestire uno stato in esecuzione, in modo che sia possibile continuare.

Le chiamate che lo SDM a Step, di esecuzionee continuare è asincrono, ovvero lo SDM richiedere la chiamata per restituire rapidamente. Se il DE invia lo SDM un evento bloccato sullo stesso thread prima di Step, di di esecuzione, o di restituzione di continuare , lo SDM il blocco.

Vedere anche

Concetti

Attività di debug