Condividi tramite


Interfacce di base

Le interfacce seguenti sono le interfacce principali per l'estensione del debugger tramite Visual Studio SDK.

Discussione

Queste interfacce vengono usate principalmente per creare il motore di debug (DE). Sono organizzati qui per categorie:

Punti di interruzione

Queste interfacce sono correlate all'implementazione e al rilevamento dei punti di interruzione.

Interfaccia Implementato da Descrizione
IDebugBoundBreakpoint2 DE Rappresenta un punto di interruzione associato a una posizione di memoria.
IDebugBreakpointBoundEvent2 DE Inviato da DE quando un punto di interruzione è associato a una posizione di memoria.
IDebugBreakpointChecksumRequest2 VS Rappresenta un checksum del documento per una richiesta di punto di interruzione.
IDebugBreakpointErrorEvent2 DE Inviato da DE quando un punto di interruzione non riesce a essere associato a una posizione di memoria.
IDebugBreakpointEvent2 DE Inviato da DE quando viene raggiunto un punto di interruzione.
IDebugBreakpointRequest2 VS Rappresenta una richiesta per un punto di interruzione; utilizzato per la creazione di un punto di interruzione in sospeso.
IDebugBreakpointRequest3 VS Rappresenta una richiesta per un punto di interruzione; utilizzato per la creazione di un punto di interruzione in sospeso.
IDebugBreakpointResolution2 DE Rappresenta le informazioni utilizzate per associare un punto di interruzione.
IDebugBreakpointUnboundEvent2 DE Inviato da DE quando un punto di interruzione non è associato da una posizione di memoria.
IDebugErrorBreakpoint2 DE Rappresenta un punto di interruzione non valido (restituito da IDebugBreakpointErrorEvent2).
IDebugErrorBreakpointResolution2 DE Rappresenta le informazioni sulla risoluzione relative a un punto di interruzione non valido.
IDebugFunctionPosition2 DE Rappresenta una posizione in una funzione in cui è impostato un punto di interruzione.
IDebugPendingBreakpoint2 DE Rappresenta un punto di interruzione da associare; utilizzato per la creazione di un punto di interruzione associato.
IEnumDebugBoundBreakpoints2 DE Rappresenta un'enumerazione su un set di punti di interruzione associati.
IEnumDebugErrorBreakpoints2 DE Rappresenta un'enumerazione su un set di punti di interruzione che non possono essere associati a una posizione di memoria.

Contesti

Queste interfacce rappresentano vari tipi di contesti all'interno del programma di cui è in corso il debug.

Interfaccia Implementato da Descrizione
IDebugCodeContext2 DE Rappresenta la posizione iniziale di un'istruzione di codice.
IDebugCodeContext3 DE Estende l'interfaccia IDebugCodeContext2 per abilitare il recupero di interfacce del modulo e del processo.
IDebugDocumentContext2 VS, DE Rappresenta una posizione in un documento.
IDebugExpressionContext2 DE Rappresenta il contesto in cui valutare un'espressione.
IDebugMemoryContext2 DE Rappresenta la posizione iniziale in memoria di una raccolta di byte.
IDebugStackFrame2 DE Rappresenta un contesto stack frame in corrispondenza di un punto di interruzione o di un'eccezione.
IDebugStackFrame3 DE Rappresenta un contesto stack frame in corrispondenza di un punto di interruzione o di un'eccezione.
IEnumDebugCodeContexts2 DE Rappresenta un'enumerazione su un set di contesti di codice.

Core Server

Queste interfacce rappresentano il computer in cui viene eseguito il debug di un programma. Questi vengono implementati da Visual Studio, ma possono essere chiamati dai motori di debug.

Interfaccia Implementato da Descrizione
IDebugCoreServer2 VS Fornisce l'accesso a porte e fornitori di porte, nonché informazioni sul computer.
IDebugCoreServer3 VS Rappresenta un IDebugCoreServer2 che supporta il debug remoto.

Motori di debug

Queste interfacce rappresentano i motori di debug e i relativi eventi associati.

Interfaccia Implementato da Descrizione
IDebugEngine2 DE Rappresenta un motore di debug personalizzato.
IDebugEngine3 DE Rappresenta un motore di debug personalizzato che supporta il caricamento di simboli, JustMyCode ed eccezioni.
IDebugEngineCreateEvent2 DE Inviato da ogni nuova istanza di DE per indicare che è pronto per gestire le attività di debug.
IDebugEngineLaunch2 DE Rappresenta un motore di debug personalizzato che supporta l'avvio di programmi.
IDebugProgramEngines2 DE, PS Rappresenta un nodo del programma che gestisce più motori di debug.
IDebugQueryEngine2 DE Consente a SDM di ottenere un'interfaccia al motore di debug da un thread, un programma o uno stack frame.

Documenti

Queste interfacce rappresentano documenti (file di origine) e i relativi elementi associati.

Interfaccia Implementato da Descrizione
IDebugActivateDocumentEvent2 DE Inviato da DE per richiedere l'apertura di un documento.
IDebugDisassemblyStream2 DE Rappresenta un flusso di istruzioni disassemblate da un documento.
IDebugDocument2 VS, DE Rappresenta un documento fornito da DE, specificando un nome e un ID classe (CLSID).
IDebugDocumentChecksum2 DE, edizione Enterprise Rappresenta un checksum per un documento di debug e consente di passare il checksum tra i componenti.
IDebugDocumentContext2 VS, DE Rappresenta un contesto di documento, una posizione all'interno di un documento corrispondente a una particolare istruzione e contesto di codice.
IDebugDocumentPosition2 VS, DE Rappresenta una posizione generale all'interno di un documento.
IDebugDocumentPositionOffset2 VS Rappresenta una posizione in un file di origine come offset di caratteri.
IDebugDocumentText2 VS, DE Rappresenta un documento di testo fornito da DE (derivato da IDebugDocument2), fornendo il testo effettivo.
IDebugDocumentTextEvents2 DE Inviato da DE per specificare le modifiche apportate a un file di origine in memoria.

Eventi

Queste interfacce rappresentano tutti gli eventi inviati tra DE e il gestore di debug della sessione .

Interfaccia Implementato da Descrizione
IDebugActivateDocumentEvent2 DE Inviato da DE per richiedere l'apertura di un documento.
IDebugBeforeSymbolSearchEvent2 DE Il motore di debug (DE) invia questa interfaccia al gestore di debug della sessione (SDM) per impostare il messaggio della barra di stato durante il caricamento dei simboli.
IDebugBreakEvent2 DE Inviato dal DE quando è stata completata un'interruzione nel programma.
IDebugBreakpointBoundEvent2 DE Inviato da DE quando è associato un punto di interruzione.
IDebugBreakpointErrorEvent2 DE Inviato da DE quando un punto di interruzione non riesce a essere associato.
IDebugBreakpointEvent2 DE Inviato da DE quando viene raggiunto un punto di interruzione.
IDebugBreakpointUnboundEvent2 DE Inviato da DE quando un punto di interruzione non è associato.
IDebugCanStopEvent2 DE Inviato dal de per determinare se deve arrestarsi in una determinata posizione.
IDebugDocumentTextEvents2 DE Inviato da DE per specificare le modifiche apportate a un file di origine in memoria.
IDebugEngineCreateEvent2 DE Inviato da ogni nuova istanza di DE per indicare che è pronto per gestire le attività di debug.
IDebugEntryPointEvent2 DE Inviato da DE per indicare che il programma sottoposto a debug è pronto per eseguire la prima istruzione.
IDebugErrorEvent2 DE Interfaccia usata da altre interfacce evento, che potrebbero restituire un errore, per fornire messaggi di errore leggibili.
IDebugEvent2 DE, PS Interfaccia di base da cui derivano tutte le altre interfacce evento.
IDebugEventCallback2 VS Rappresenta un'interfaccia implementata da SDM a cui vengono inviati gli eventi (espressi come oggetti che implementano un'interfaccia evento specifica).
IDebugExceptionEvent2 DE Inviato da DE quando si è verificata un'eccezione nel programma di cui è in corso il debug.
IDebugExpressionEvaluationCompleteEvent2 DE Inviato da DE al termine di una valutazione asincrona dell'espressione.
IDebugFindSymbolEvent2 OBSOLETO. NON U edizione Standard.
IDebugInterceptExceptionCompleteEvent2 DE Inviato dal de durante l'elaborazione per un'eccezione intercettata è stata completata.
IDebugLoadCompleteEvent2 DE Inviato da DE quando un programma ha completato il caricamento.
IDebugMessageEvent2 DE Inviato da DE per fare in modo che l'IDE visualizzi un messaggio informativo all'utente.
IDebugModuleLoadEvent2 DE Inviato da DE quando un modulo viene caricato o scaricato.
IDebugNoSymbolsEvent2 DE Segnala all'interfaccia utente del debugger di Visual Studio di avvisare l'utente che non è stato possibile individuare i simboli per l'eseguibile avviato.
IDebugOutputStringEvent2 DE Inviato da DE per fare in modo che l'IDE visualizzi una stringa arbitraria.
IDebugPortEvents2 VS, DE Inviato da una porta per comunicare gli eventi di porta a qualsiasi listener.
IDebugProcessCreateEvent2 DE, PS Inviato dalla porta o DE quando è stato creato un processo.
IDebugProcessDestroyEvent2 DE, PS Inviato dalla porta o DE quando un processo è stato distrutto.
IDebugProgramCreateEvent2 DE, PS Inviato dalla porta o DE quando è stato creato un programma.
IDebugProgramDestroyEvent2 DE, PS Inviato dal DE o dalla porta quando un programma è stato distrutto.
IDebugProgramDestroyEventFlags2 DE Consente a un motore di debug di eseguire l'override del comportamento predefinito dell'interfaccia utente di Visual Studio quando si termina una sessione di debug.
IDebugProgramNameChangedEvent2 DE Inviato dal motore di debug (DE) al gestore di debug della sessione (SDM) quando cambia il nome di un programma.
IDebugPropertyCreateEvent2 DE Inviato da DE quando è stata creata una nuova proprietà (rappresentata dall'interfaccia IDebugProperty2 ).
IDebugPropertyDestroyEvent2 DE Inviato dal DE quando una proprietà è stata distrutta.
IDebugReturnValueEvent2 DE Inviato da DE quando si esce da o su una funzione in modo che il valore restituito possa essere visualizzato correttamente.
IDebugSettingsCallback2 VS Consente ai motori di debug di leggere le impostazioni delle metriche in remoto.
IDebugStepCompleteEvent2 DE Inviato da DE quando è stato completato un passaggio, oltre o fuori da un'istruzione.
IDebugSymbolSearchEvent2 DE Inviato da DE per indicare l'esito positivo o negativo del caricamento dei simboli per un modulo.
IDebugThreadCreateEvent2 DE Inviato da DE quando è stato creato un thread.
IDebugThreadDestroyEvent2 DE Inviato dal DE quando un thread è stato distrutto.
IDebugThreadNameChangedEvent2 DE Inviato da DE quando un thread ha modificato il nome.

Espressioni

Queste interfacce rappresentano le espressioni da valutare in un contesto specifico.

Interfaccia Implementato da Descrizione
IDebugExpression2 DE Rappresenta un'espressione da valutare. Ottenuto dall'interfaccia IDebugExpressionContext2 .
IDebugExpressionContext2 DE Rappresenta un contesto in cui viene valutata un'espressione. Ottenuto dall'interfaccia IDebugStackFrame2 .
IDebugExpressionEvaluationCompleteEvent2 DE Inviato da DE al termine di una valutazione asincrona dell'espressione.

Memoria

Queste interfacce rappresentano sequenze di byte in memoria.

Interfaccia Implementato da Descrizione
IDebugMemoryBytes2 DE Rappresenta una sequenza di byte in memoria in cui è possibile leggere o scrivere.
IDebugMemoryContext2 DE Rappresenta una posizione in memoria di una sequenza di byte.

Moduli

Queste interfacce rappresentano un modulo, che corrisponde a un file eseguibile o DLL.

Interfaccia Implementato da Descrizione
IDebugModule2 DE Rappresenta un singolo eseguibile o DLL.
IDebugModule3 DE Rappresenta un IDebugModule2 che supporta i simboli.
IDebugModuleLoadEvent2 DE Inviato da DE quando un modulo viene caricato o scaricato.
IDebugSourceServerModule DE Rappresenta le informazioni sul server di origine contenute in un file PDB.
IEnumDebugModules2 DE Rappresenta un'enumerazione su un set di moduli noti da un IDebugProgram2.

Porti

Queste interfacce rappresentano porte e fornitori di porte.

Interfaccia Implementato da Descrizione
IDebugDefaultPort2 VS, PS Rappresenta la porta predefinita nel computer locale.
IDebugFirewallConfigurationCallback2 VS Abilita un motore di debug che usa DCOM per chiedere all'interfaccia utente di Visual Studio di assicurarsi che il firewall non blocchi il debug remoto.
IDebugPort2 VS, PS Rappresenta una porta.
IDebugPortEvents2 PS Inviato da una porta per comunicare gli eventi di porta a qualsiasi listener.
IDebugPortEx2 PS Rappresenta una porta in grado di avviare e terminare i processi.
IDebugPortNotify2 PS Utilizzato per registrare e annullare la registrazione dei programmi con una porta; consente alla porta di tenere traccia dei programmi attualmente in fase di debug.
IDebugPortPicker PS Rappresenta un'interfaccia utente personalizzata per la selezione della porta.
IDebugPortRequest2 VS Rappresenta una richiesta per una porta da cui verrà creata o individuata una nuova porta.
IDebugPortSupplier2 PS Rappresenta un fornitore di porte.
IDebugPortSupplier3 PS Rappresenta un fornitore di porte che possono salvare in modo permanente (salvare su disco) informazioni sulle porte create.
IDebugPortSupplierDescription2 PS Consente all'interfaccia utente di Visual Studio di visualizzare il testo all'interno della sezione Informazioni di trasporto della finestra di dialogo Connetti a processo .
IDebugWindowsComputerPort2 VS Consente di eseguire query per ottenere informazioni sul computer di destinazione.
IEnumDebugPorts2 VS, PS Rappresenta un'enumerazione su un set di porte.
IEnumDebugPortSuppliers2 VS Rappresenta un'enumerazione su un set di fornitori di porte.

Processi

Queste interfacce rappresentano processi, un singolo eseguibile che contiene uno o più programmi.

Interfaccia Implementato da Descrizione
IDebugProcess2 PS, DE Rappresenta un processo in esecuzione in un computer.
IDebugProcess3 PS, DE Rappresenta un processo che supporta attivamente il debug (utilizzato per sostituire i metodi Step, Continue ed Execute nell'interfaccia IDebugProgram2 ).
IDebugProcessCreateEvent2 DE, PS Inviato dalla porta o DE quando è stato creato un processo.
IDebugProcessDestroyEvent2 DE, PS Inviato dalla porta o DE quando un processo è stato distrutto.
IDebugProcessEx2 PS Rappresenta un processo che deve tenere traccia della sessione collegata.
IEnumDebugProcesses2 PS Rappresenta un'enumerazione di un set di processi su una porta.

Programmi

Queste interfacce rappresentano programmi, unità logiche di esecuzione che non corrispondono necessariamente a un eseguibile fisico o a un modulo.

Interfaccia Implementato da Descrizione
IDebugEngineProgram2 DE Rappresenta un IDebugProgram2 che deve funzionare insieme ad altri programmi di cui viene eseguito il debug contemporaneamente.
IDebugProgram2 DE, PS Rappresenta un'unità logica di esecuzione.
IDebugProgramCreateEvent2 DE, PS Inviato dalla porta o DE quando è stato creato un programma.
IDebugProgramDestroyEvent2 DE, PS Inviato dal DE o dalla porta quando un programma è stato distrutto.
IDebugProgramEngines2 DE, PS Rappresenta un oggetto IDebugProgramNode2 che può essere gestito da più motori di debug.
IDebugProgramEx2 PS Rappresenta un IDebugProgram2 che deve essere in grado di tenere traccia della sessione collegata.
IDebugProgramHost2 DE, PS Rappresenta un IDebugProgram2 che può restituire informazioni sul processo in cui è in esecuzione.
IDebugProgramNode2 DE, PS Rappresenta un programma che può essere sottoposto a debug.
IDebugProgramNodeAttach2 DE, PS Consente a un nodo del programma di ricevere una notifica di un tentativo di connessione al programma associato.
IDebugProgramProvider2 DE Consente al SDM di eseguire query su un DE sui programmi controllati da tale de.
IDebugProgramPublisher2 VS Usato dalle DE per registrare i programmi con SDM per mostrare che vengono sottoposti a debug.
IDebugProviderProgramNode2 DE, PS Rappresenta un oggetto IDebugProgramNode2 in grado di effettuare il marshalling di interfacce attraverso i limiti del thread o del processo.
IEnumDebugPrograms2 DE, PS Rappresenta un'enumerazione di un set di programmi.

Proprietà

Queste interfacce rappresentano proprietà, un valore associato a un contesto specifico, in genere il risultato di una valutazione dell'espressione.

Interfaccia Implementato da Descrizione
IDebugCustomViewer EE Rappresenta un oggetto IDebugProperty2 che può visualizzarne il valore in modo personalizzato.
IDebugProperty2 DE Rappresenta un valore di uno stack frame, un documento o il risultato di una valutazione di un'espressione.
IDebugProperty3 DE Rappresenta un oggetto IDebugProperty2 che supporta stringhe arbitrariamente lunghe.
IDebugPropertyCreateEvent2 DE Inviato da DE quando è stata creata una nuova proprietà (rappresentata dall'interfaccia IDebugProperty2 ).
IDebugPropertyDestroyEvent2 DE Inviato dal DE quando una proprietà è stata distrutta.
IDebugReference2 DE Rappresenta un riferimento a una proprietà che può esistere all'esterno di un particolare stack frame.
IEnumDebugPropertyInfo2 DE Rappresenta un'enumerazione su un set di strutture DEBUG_PROPERTY_INFO che descrivono variabili, registri, parametri ed espressioni.
IEnumDebugReferenceInfo2 DE Rappresenta un'enumerazione su un set di strutture DEBUG_REFERENCE_INFO .

Frame dello stack

Queste interfacce rappresentano uno stack frame, un contesto in cui si è verificato un punto di interruzione o un'eccezione.

Interfaccia Implementato da Descrizione
IDebugStackFrame2 DE Rappresenta un contesto in cui si è verificato un punto di interruzione o un'eccezione.
IDebugStackFrame3 DE Rappresenta un IDebugStackFrame2 che può gestire le eccezioni intercettate.
IEnumCodePaths2 DE Rappresenta un'enumerazione sul set di strutture CODE_PATH che specificano la sequenza di chiamata di funzione utilizzata per arrivare a un particolare stack frame.
IEnumDebugFrameInfo2 DE Rappresenta un'enumerazione su un set di strutture FRAMEINFO , che descrivono gli stack frame.

Threads

Queste interfacce rappresentano thread e i relativi eventi associati.

Interfaccia Implementato da Descrizione
IDebugThread2 DE Rappresenta un thread di esecuzione.
IDebugThreadCreateEvent2 DE Inviato da DE quando è stato creato un thread.
IDebugThreadDestroyEvent2 DE Inviato dal DE quando un thread è stato distrutto.
IDebugThreadNameChangedEvent2 DE Inviato da DE quando un thread ha modificato il nome.
IEnumDebugThreads2 DE Rappresenta un'enumerazione su un set di thread.

Visualizzatori di tipi

Queste interfacce forniscono il supporto per i visualizzatori di tipi. Queste interfacce vengono in genere implementate da un analizzatore di espressioni.

Interfaccia Implementato da Descrizione
IEEDataStorage EE Rappresenta una matrice di byte da presentare a un visualizzatore di tipi.
IPropertyProxyEESide EE Fornisce metodi per ottenere l'accesso ai dati da passare a un visualizzatore di tipi.
IPropertyProxyProvider EE Rappresenta una proprietà che fornisce l'accesso alle implementazioni IPropertyProxy edizione Enterprise Side.

Vedi anche