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 | |
---|---|---|
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 dentro del contexto del entorno de desarrollo integrado (IDE). | |
CurrentProcess | Establece u obtiene el proceso activo. | |
CurrentProgram | Establece u obtiene el programa activo. | |
CurrentStackFrame | Establece u obtiene el marco de pila actual. | |
CurrentThread | Establece u obtiene el subproceso actual 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 si el resultado de las expresiones tiene formato hexadecimal o decimal. | |
HexInputMode | Obtiene o establece 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 de un objeto Debugger. |
Arriba
Métodos
Nombre | Descripción | |
---|---|---|
Break | Provoca una pausa en la ejecución del proceso indicado para poder analizar su estado actual. | |
DetachAll | Desasocia 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 la salida se envía a la ventana Comandos. | |
GetExpression | Se evalúa como una expresión basada 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. | |
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 en el 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, terminación o desasociación de todos los procesos asociados. | |
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;
}