Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un motore di debug (DE) funziona con l'interprete o il sistema operativo per fornire servizi di debug, ad esempio il controllo dell'esecuzione, i punti di interruzione e la valutazione delle espressioni. Il DE è responsabile del monitoraggio dello stato di un programma sottoposto a debug. Per raggiungere questo obiettivo, il DE utilizza qualsiasi metodo disponibile nel runtime supportato, sia dalla CPU che dalle API fornite dal runtime.
Ad esempio, Common Language Runtime (CLR) fornisce meccanismi per monitorare un programma in esecuzione tramite le interfacce ICorDebugXXX. Un DE che supporta CLR usa le interfacce ICorDebugXXX appropriate per tenere traccia di un programma di codice gestito sottoposto a debug. Comunica quindi eventuali modifiche dello stato al gestore di debug della sessione (SDM), che inoltra tali informazioni all'IDE di Visual Studio.
Annotazioni
Un motore di debug è destinato a un runtime specifico, ovvero il sistema in cui viene eseguito il debug del programma. CLR è il runtime per il codice gestito e il runtime Win32 è per le applicazioni Windows native. Se il linguaggio creato può essere di destinazione di uno di questi due runtime, Visual Studio fornisce già i motori di debug necessari. Tutto quello che è necessario implementare è un analizzatore di espressioni.
Operazione del motore di debug
I servizi di monitoraggio vengono implementati tramite le interfacce DE e possono causare la transizione del pacchetto di debug tra diverse modalità operative. Per altre informazioni, vedere Modalità operative. In genere è presente una sola implementazione DE per ogni ambiente di runtime.
Annotazioni
Sebbene siano presenti implementazioni DE separate per Transact-SQL e JScript, VBScript e JScript condividono un singolo DE.
Il debug di Visual Studio consente ai motori di debug di eseguire uno dei due modi seguenti: nello stesso processo della shell di Visual Studio o nello stesso processo del programma di destinazione sottoposto a debug. Quest'ultimo modulo si verifica in genere quando il processo sottoposto a debug è in realtà uno script in esecuzione in un interprete. Il motore di debug deve avere una conoscenza intima dell'interprete per monitorare lo script. In questo caso, l'interprete è in realtà un runtime; i motori di debug sono per implementazioni di runtime specifiche. Inoltre, l'implementazione di un singolo DE può essere suddivisa tra i limiti del processo e del computer , ad esempio il debug remoto.
Il DE espone le interfacce di debug di Visual Studio. Tutte le comunicazioni sono tramite COM. Indipendentemente dal fatto che il DE venga caricato nel processo, fuori dal processo o su un altro computer, non influisce sulla comunicazione dei componenti.
DE funziona con un componente dell'analizzatore di espressioni per consentire al de per quel determinato runtime di comprendere la sintassi delle espressioni. De funziona anche con un componente del gestore di simboli per accedere alle informazioni di debug simbolico generate dal compilatore del linguaggio. Per altre informazioni, vedere Analizzatore di espressioni e provider di simboli.