Compartir a través de


Debugger2 (Interfaz)

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

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

Sintaxis

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

El tipo Debugger2 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 en el contexto de la IDE.
Propiedad pública CurrentProcess Obtiene o establece el proceso activo.
Propiedad pública CurrentProgram Establece o devuelve el programa activo.
Propiedad pública CurrentStackFrame Obtiene o establece el marco de pila actual.
Propiedad pública CurrentThread Obtiene o establece el subproceso 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 un valor que indica si las expresiones se representan en formato hexadecimal o decimal.
Propiedad pública HexInputMode Obtiene o establece un valor que indica 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 del objeto Debugger2 (DTE2).
Propiedad pública Transports Obtiene una colección de transportes de la depuración compatibles.

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 el resultado se envía a la Ventana de comandos.
Método público GetExpression Evalúa una expresión basándose en el marco de pila actual.Si la expresión puede analizarse pero no puede evaluarse, se devuelve un objeto que no contendrá un valor válido.
Método público GetExpression2 Evalúa una expresión basándose en el marco de pila actual.Si la expresión puede analizarse pero no puede evaluarse, se devuelve un objeto que no contendrá un valor válido.
Método público GetProcesses Permite al llamador obtener una colección de procesos de una máquina remota.
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 y finaliza o desasocia todos los procesos asociados.
Método público TerminateAll Finaliza todos los procesos de depuración en ejecución.
Método público WriteMinidump Si se está depurando un programa y en el modo de interrupción, esta función crea un minivolcado de la sesión de depuración actual.

Arriba

Comentarios

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

Ejemplos

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;
}

Vea también

Referencia

EnvDTE80 (Espacio de nombres)