Interfaccia Debugger2
L'oggetto Debugger2 viene utilizzato per interrogare e modificare lo stato del debugger e del programma sottoposto a debug. L'oggetto Debugger2 sostituisce l'oggetto Debugger.
Spazio dei nomi: EnvDTE80
Assembly: EnvDTE80 (in EnvDTE80.dll)
Sintassi
'Dichiarazione
<GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")> _
Public Interface Debugger2 _
Inherits Debugger
[GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")]
public interface Debugger2 : Debugger
[GuidAttribute(L"8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")]
public interface class Debugger2 : Debugger
[<GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")>]
type Debugger2 =
interface
interface Debugger
end
public interface Debugger2 extends Debugger
Il tipo Debugger2 espone i seguenti membri.
Proprietà
Nome | Descrizione | |
---|---|---|
AllBreakpointsLastHit | Ottiene una raccolta di punti di interruzione associati raggiunti per ultimi contemporaneamente. | |
BreakpointLastHit | Ottiene l'ultimo punto di interruzione raggiunto. | |
Breakpoints | Ottiene una raccolta di punti di interruzione. | |
CurrentMode | Ottiene la modalità corrente del debugger nel contesto dell'IDE. | |
CurrentProcess | Ottiene o imposta il processo attivo. | |
CurrentProgram | Imposta o restituisce il programma attivo. | |
CurrentStackFrame | Ottiene o imposta lo stack frame corrente. | |
CurrentThread | Ottiene o imposta il thread corrente di cui è in corso il 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 le espressioni vengono generate in formato 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, viene restituito DBG_REASON_NONE. | |
LocalProcesses | Ottiene l'elenco dei processi in esecuzione nel computer in uso. | |
Parent | Ottiene l'oggetto padre immediato dell'oggetto Debugger2 (DTE2). | |
Transports | Ottiene una raccolta di trasporti di debug supportati. |
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 a Finestra di comando. | |
GetExpression | Valuta un'espressione basata sullo stack frame corrente.Se l'espressione può essere analizzata, ma non valutata, viene restituito un oggetto, ma il valore in esso contenuto non sarà valido. | |
GetExpression2 | Valuta un'espressione basata sullo stack frame corrente.Se l'espressione può essere analizzata, ma non valutata, viene restituito un oggetto, ma il valore in esso contenuto non sarà valido. | |
GetProcesses | Consente al chiamante di ottenere una raccolta di processi da un computer remoto. | |
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 il debug e termina o disconnette tutti i processi collegati. | |
TerminateAll | Termina tutti i processi di debug in esecuzione. | |
WriteMinidump | Se è in corso il debug di un programma ed è attivata la modalità di interruzione, questa funzione crea un minidump della sessione di debug corrente. |
In alto
Note
Come illustrato nell'esempio riportato di seguito, il debugger è disponibile attraverso l'oggetto DTE2 mediante la relativa proprietà Debugger. È disponibile un oggetto debugger per ogni istanza dell'ambiente di sviluppo.
Esempi
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 EnvDTE80.Debugger2
debugger = DTE2.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 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 EnvDTE80;
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(&pDebugger2)) &&
pDebugger2
!= NULL){
dbgDebugMode mode;
if (SUCCEEDED(pDebugger2->get_CurrentMode(&mode))) {
if (mode != dbgDesignMode) {
printf("Debugger is active.\n");
nRet = 1;
}
else {
printf("Debugger is not active.\n");
}
}
}
}
}
CoUninitialize();
return nRet;
}