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 | |
---|---|---|
AllBreakpointsLastHit | Obtiene una colección de puntos de interrupción enlazados que se alcanzaron simultáneamente la última vez. | |
BreakpointLastHit | Obtiene el último punto de interrupción alcanzado. | |
Breakpoints | Obtiene una colección de puntos de interrupción. | |
CurrentMode | Obtiene el modo actual del depurador en el contexto de la IDE. | |
CurrentProcess | Obtiene o establece el proceso activo. | |
CurrentProgram | Establece o devuelve el programa activo. | |
CurrentStackFrame | Obtiene o establece el marco de pila actual. | |
CurrentThread | Obtiene o establece el subproceso que se está depurando. | |
DebuggedProcesses | Obtiene la lista de procesos que se están depurando actualmente. | |
DTE | Obtiene el objeto de extensibilidad de nivel superior. | |
HexDisplayMode | Obtiene o establece un valor que indica si las expresiones se representan en formato hexadecimal o decimal. | |
HexInputMode | Obtiene o establece un valor que indica si las expresiones se evalúan en formato hexadecimal o decimal. | |
Languages | Obtiene una lista de lenguajes compatibles con el depurador. | |
LastBreakReason | Obtiene el último motivo por el que se interrumpió un programa.Si el programa está en ejecución, devuelve DBG_REASON_NONE. | |
LocalProcesses | Obtiene la lista de procesos que se ejecutan actualmente en esta máquina. | |
Parent | Obtiene el objeto primario inmediato del objeto Debugger2 (DTE2). | |
Transports | Obtiene una colección de transportes de la depuración compatibles. |
Arriba
Métodos
Nombre | Descripción | |
---|---|---|
Break | Provoca una pausa en la ejecución del proceso indicado para poder analizar su estado actual. | |
DetachAll | Procede a la desconexión de todos los programas asociados. | |
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. | |
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. | |
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. | |
GetProcesses | Permite al llamador obtener una colección de procesos de una máquina remota. | |
Go | Inicia la ejecución del programa a partir de la instrucción actual. | |
RunToCursor | Ejecuta el programa hasta la posición actual del cursor del archivo de código fuente. | |
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. | |
StepInto | Recorre paso a paso instrucciones hasta llegar a la siguiente llamada a una función, si es posible. | |
StepOut | Sale paso a paso de la función actual. | |
StepOver | Pasa por alto la siguiente llamada a función. | |
Stop | Detiene la depuración y finaliza o desasocia todos los procesos asociados. | |
TerminateAll | Finaliza todos los procesos de depuración en ejecución. | |
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;
}