Condividi tramite


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
Proprietà pubblica AllBreakpointsLastHit Ottiene un insieme di punti di interruzione associati raggiunti per ultimi contemporaneamente.
Proprietà pubblica BreakpointLastHit Ottiene l'ultimo punto di interruzione raggiunto.
Proprietà pubblica Breakpoints Ottiene un insieme di punti di interruzione.
Proprietà pubblica CurrentMode Ottiene la modalità corrente del debugger nel contesto dell'ambiente di sviluppo integrato (IDE).
Proprietà pubblica CurrentProcess Ottiene o imposta il processo attivo.
Proprietà pubblica CurrentProgram Ottiene o imposta il programma attivo.
Proprietà pubblica CurrentStackFrame Ottiene o imposta lo stack frame corrente.
Proprietà pubblica CurrentThread Ottiene o imposta il thread corrente sottoposto a debug.
Proprietà pubblica DebuggedProcesses Ottiene l'elenco di processi di cui è in corso il debug.
Proprietà pubblica DTE Ottiene l'oggetto estensibilità di primo livello.
Proprietà pubblica HexDisplayMode Ottiene o imposta un valore che indica se il formato dell'output delle espressioni è decimale o esadecimale.
Proprietà pubblica HexInputMode Ottiene o imposta un valore che indica se le espressioni vengono valutate in formato decimale o esadecimale.
Proprietà pubblica Languages Ottiene un elenco di linguaggi supportati dal debugger.
Proprietà pubblica LastBreakReason Ottiene l'ultima causa dell'interruzione di un programma.Se il programma è in esecuzione, restituisce DBG_REASON_NONE.
Proprietà pubblica LocalProcesses Ottiene l'elenco dei processi in esecuzione nel computer in uso.
Proprietà pubblica Parent Ottiene l'oggetto padre diretto di un oggetto Debugger.

In alto

Metodi

  Nome Descrizione
Metodo pubblico Break Provoca la sospensione dell'esecuzione del processo specificato in modo da consentire l'analisi del suo stato corrente.
Metodo pubblico DetachAll Disconnette da tutti i programmi collegati.
Metodo pubblico 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.
Metodo pubblico 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.
Metodo pubblico Go Avvia l'esecuzione del programma dall'istruzione corrente.
Metodo pubblico RunToCursor Esegue il programma nella posizione corrente del cursore del file di origine.
Metodo pubblico SetNextStatement Imposta la successiva istruzione da eseguire in base alla posizione corrente del cursore nel file di origine.
Metodo pubblico StepInto Esegue la chiamata di funzione successiva, se possibile.
Metodo pubblico StepOut Esce dalla funzione corrente.
Metodo pubblico StepOver Esegue la chiamata di funzione successiva.
Metodo pubblico Stop Interrompe l'operazione di debug, interruzione o disconnessione di tutti i processi connessi.
Metodo pubblico 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;
}

Vedere anche

Riferimenti

Spazio dei nomi EnvDTE

Altre risorse

Grafico del modello a oggetti di automazione

Debugging in Visual Studio