Debugger (Interfaz)

El objeto Debugger se utiliza para interrogar y manipular el estado del depurador y el programa que se está depurando.

Espacio de nombres:  EnvDTE
Ensamblado:  EnvDTE (en EnvDTE.dll)

Sintaxis

'Declaración
<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

El tipo Debugger expone los siguientes miembros.

Propiedades

  Nombre Descripción
Propiedad pública AllBreakpointsLastHit Obtiene una colección de puntos de interrupción enlazados que se alcanzaron simultáneamente la última vez.
Propiedad pública BreakpointLastHit Obtiene el último punto de interrupción alcanzado.
Propiedad pública Breakpoints Obtiene una colección de puntos de interrupción.
Propiedad pública CurrentMode Obtiene el modo actual del depurador dentro del contexto del entorno de desarrollo integrado (IDE).
Propiedad pública CurrentProcess Establece u obtiene el proceso activo.
Propiedad pública CurrentProgram Establece u obtiene el programa activo.
Propiedad pública CurrentStackFrame Establece u obtiene el marco de pila actual.
Propiedad pública CurrentThread Establece u obtiene el subproceso actual que se está depurando.
Propiedad pública DebuggedProcesses Obtiene la lista de procesos que se están depurando actualmente.
Propiedad pública DTE Obtiene el objeto de extensibilidad de nivel superior.
Propiedad pública HexDisplayMode Obtiene o establece si el resultado de las expresiones tiene formato hexadecimal o decimal.
Propiedad pública HexInputMode Obtiene o establece si las expresiones se evalúan en formato hexadecimal o decimal.
Propiedad pública Languages Obtiene una lista de lenguajes compatibles con el depurador.
Propiedad pública LastBreakReason Obtiene el último motivo por el que se interrumpió un programa.Si el programa está en ejecución, devuelve DBG_REASON_NONE.
Propiedad pública LocalProcesses Obtiene la lista de procesos que se ejecutan actualmente en esta máquina.
Propiedad pública Parent Obtiene el objeto primario inmediato de un objeto Debugger.

Arriba

Métodos

  Nombre Descripción
Método público Break Provoca una pausa en la ejecución del proceso indicado para poder analizar su estado actual.
Método público DetachAll Procede a la desconexión de todos los programas asociados.
Método público ExecuteStatement Ejecuta la instrucción especificada.Si la marca TreatAsExpression es true, la cadena se interpreta como una expresión y la salida se envía a la ventana Comandos.
Método público GetExpression Evalúa una expresión basándose en el marco de pila actual.Si se puede analizar la expresión pero no se puede evaluar, se devuelve un objeto, pero éste no contendrá un valor válido.
Método público Go Inicia la ejecución del programa a partir de la instrucción actual.
Método público RunToCursor Ejecuta el programa hasta la posición actual del cursor del archivo de código fuente.
Método público SetNextStatement Establece la siguiente instrucción que se va a ejecutar, según la posición del cursor en el archivo de código fuente actual.
Método público StepInto Recorre paso a paso instrucciones hasta llegar a la siguiente llamada a una función, si es posible.
Método público StepOut Sale paso a paso de la función actual.
Método público StepOver Pasa por alto la siguiente llamada a función.
Método público Stop Detiene la depuración, terminación o desasociación de todos los procesos asociados.
Método público TerminateAll Finaliza todos los procesos.

Arriba

Comentarios

El depurador está disponible a través del objeto DTE mediante su propiedad Debugger, como se muestra en el ejemplo siguiente. Para cada instancia del entorno de desarrollo hay un objeto Debugger disponible.

Ejemplos

En el ejemplo siguiente se muestra cómo utilizar el objeto 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;
}

Vea también

Referencia

EnvDTE (Espacio de nombres)

Otros recursos

Gráfico del modelo de objetos de automatización

Depurar en Visual Studio