Interfaccia Debugger
L'oggetto Debugger viene utilizzato per interrogare e modificare lo stato del debugger e del programma sottoposto a debug.
Spazio dei nomi: EnvDTE
Assembly: EnvDTE (in EnvDTE.dll)
Sintassi
'Dichiarazione
<GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")> _
Public Interface Debugger
[GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")]
public interface Debugger
[GuidAttribute(L"338FB9A0-BAE5-11D2-8AD1-00C04F79E479")]
public interface class Debugger
[<GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")>]
type Debugger = interface end
public interface Debugger
Il tipo Debugger espone i seguenti membri.
Proprietà
Nome | Descrizione | |
---|---|---|
AllBreakpointsLastHit | Ottiene un insieme di punti di interruzione associati raggiunti per ultimi contemporaneamente. | |
BreakpointLastHit | Ottiene l'ultimo punto di interruzione raggiunto. | |
Breakpoints | Ottiene un insieme di punti di interruzione. | |
CurrentMode | Ottiene la modalità corrente del debugger nel contesto dell'ambiente di sviluppo integrato (IDE). | |
CurrentProcess | Ottiene o imposta il processo attivo. | |
CurrentProgram | Ottiene o imposta il programma attivo. | |
CurrentStackFrame | Ottiene o imposta lo stack frame corrente. | |
CurrentThread | Ottiene o imposta il thread corrente sottoposto a debug. | |
DebuggedProcesses | Ottiene l'elenco di processi di cui è in corso il debug. | |
DTE | Ottiene l'oggetto estensibilità di primo livello. | |
HexDisplayMode | Ottiene o imposta un valore che indica se il formato dell'output delle espressioni è decimale o esadecimale. | |
HexInputMode | Ottiene o imposta un valore che indica se le espressioni vengono valutate in formato decimale o esadecimale. | |
Languages | Ottiene un elenco di linguaggi supportati dal debugger. | |
LastBreakReason | Ottiene l'ultima causa dell'interruzione di un programma.Se il programma è in esecuzione, restituisce DBG_REASON_NONE. | |
LocalProcesses | Ottiene l'elenco dei processi in esecuzione nel computer in uso. | |
Parent | Ottiene l'oggetto padre diretto di un oggetto Debugger. |
In alto
Metodi
Nome | Descrizione | |
---|---|---|
Break | Provoca la sospensione dell'esecuzione del processo specificato in modo da consentire l'analisi del suo stato corrente. | |
DetachAll | Disconnette da tutti i programmi collegati. | |
ExecuteStatement | Esegue l'istruzione specificata.Se il flag TreatAsExpression è true, la stringa viene interpretata come un'espressione e l'output viene inviato alla finestra di comando. | |
GetExpression | Valuta un'espressione in base allo stack frame corrente.Se l'espressione può essere analizzata ma non valutata, viene restituito un oggetto che però non contiene un valore valido. | |
Go | Avvia l'esecuzione del programma dall'istruzione corrente. | |
RunToCursor | Esegue il programma nella posizione corrente del cursore del file di origine. | |
SetNextStatement | Imposta la successiva istruzione da eseguire in base alla posizione corrente del cursore nel file di origine. | |
StepInto | Esegue la chiamata di funzione successiva, se possibile. | |
StepOut | Esce dalla funzione corrente. | |
StepOver | Esegue la chiamata di funzione successiva. | |
Stop | Interrompe l'operazione di debug, interruzione o disconnessione di tutti i processi connessi. | |
TerminateAll | Termina tutti i processi. |
In alto
Note
Il debugger è accessibile dall'oggetto DTE, tramite la proprietà Debugger, come illustrato nell'esempio riportato di seguito. È disponibile un oggetto debugger per ogni istanza dell'ambiente di sviluppo.
Esempi
Nell'esempio riportato di seguito viene illustrato come utilizzare l'oggetto Debugger.
Imports EnvDTE
Imports System.Diagnostics
Public Module Module1
' This function returns true if the debugger is actively debugging.
Function IsDebugging() As Boolean
Dim debugger As EnvDTE.Debugger
debugger = DTE.Debugger
If (debugger Is Nothing) Then
MsgBox("Debugger doesn't exist! Fatal error.")
IsDebugging = false
Else
IsDebugging = (debugger.CurrentMode <> dbgDebugMode.dbgDesignMode)
End If
End Function
End Module
// The following small C++ program can be run from the command line.
// It detects whether an instance of Visual Studio is currently
// running,and if so, prints a message stating whether its debugger
// is actively debugging.
#include <stdio.h>
#import "dte.olb" raw_interfaces_only named_guids
using namespace EnvDTE;
int main(void)
{
int nRet = 0;
CoInitialize(NULL);
IUnknownPtr pUnk;
GetActiveObject(CLSID_DTE, NULL, &pUnk);
if (pUnk == NULL) {
printf ("No instance of Visual Studio is running.\n");
}
else {
_DTEPtr pDTE = pUnk;
if (pDTE) {
DebuggerPtr pDebugger;
if (SUCCEEDED(pDTE->get_Debugger(&pDebugger)) && pDebugger != NULL){
dbgDebugMode mode;
if (SUCCEEDED(pDebugger->get_CurrentMode(&mode))) {
if (mode != dbgDesignMode) {
printf("Debugger is active.\n");
nRet = 1;
}
else {
printf("Debugger is not active.\n");
}
}
}
}
}
CoUninitialize();
return nRet;
}