Debugger – rozhraní
Debugger Objektu lze interrogate a manipulovat s nimi stát ladicí program a program právě laděn.
Obor názvů: EnvDTE
Sestavení: EnvDTE (v EnvDTE.dll)
Syntaxe
'Deklarace
<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
Typ Debugger zveřejňuje následující členy.
Vlastnosti
Název | Popis | |
---|---|---|
AllBreakpointsLastHit | Získá kolekce vázané zarážek, které byly naposledy současně přístupů. | |
BreakpointLastHit | Získá poslední zarážky přístupů. | |
Breakpoints | Získá kolekce zarážek. | |
CurrentMode | Načte aktuální režim ladění v rámci integrované vývojové prostředí (IDE). | |
CurrentProcess | Nastaví nebo získává aktivní proces. | |
CurrentProgram | Nastaví nebo získává aktivní aplikaci. | |
CurrentStackFrame | Nastaví nebo získá aktuální snímek zásobníku. | |
CurrentThread | Nastaví nebo získá aktuální podproces právě laděn. | |
DebuggedProcesses | Získá seznam procesů, které jsou právě laděn. | |
DTE | Načtení objektu nejvyšší úrovně rozšiřitelnosti. | |
HexDisplayMode | Získá nebo nastaví, zda jsou výrazy výstup v šestnáctkovém nebo desítkovém formátu. | |
HexInputMode | Získá nebo nastaví, zda výrazy jsou vyhodnocovány v šestnáctkovém nebo desítkovém formátu. | |
Languages | Získá seznam jazyků, které podporuje ladicí program. | |
LastBreakReason | Získá poslední důvod, který program bylo přerušeno.Pokud program je spuštěn vrátí DBG_REASON_NONE. | |
LocalProcesses | Získá seznam procesů, které jsou aktuálně spuštěné v počítači. | |
Parent | Získá bezprostřední nadřízený objekt Debugger objektu. |
Nahoru
Metody
Název | Popis | |
---|---|---|
Break | Způsobí, že daný proces tak, aby jeho aktuální stav lze analyzovat pozastavit jeho provádění. | |
DetachAll | Odpojí se od všech připojených programů. | |
ExecuteStatement | Provede zadaný příkaz.Pokud TreatAsExpression příznak je trueje řetězec interpretován jako výraz a výstup je odeslán do příkazového okna. | |
GetExpression | Vyhodnotí výraz na základě aktuální snímek zásobníku.Pokud výraz lze analyzovat, ale nebudou vyhodnoceny, objekt je vrácena, ale neobsahuje platnou hodnotu. | |
Go | Spustí provádění programu od aktuální příkaz. | |
RunToCursor | Spustí program na aktuální pozici kurzoru zdrojového souboru. | |
SetNextStatement | Nastaví další instrukce, které mají být provedeny podle umístění kurzoru v aktuální zdrojový soubor. | |
StepInto | Kroky do další volání funkce, pokud je to možné. | |
StepOut | Kroky z aktuální funkce. | |
StepOver | Kroky přes další volání funkce. | |
Stop | Zarážky ladění, ukončení nebo odpojení ze všech připojených procesů. | |
TerminateAll | Ukončí všechny procesy. |
Nahoru
Poznámky
Ladicí program je k dispozici DTE objektu formou jeho Debugger vlastnost, jak je znázorněno v následujícím příkladu.Jeden objekt debugger je k dispozici pro každou instanci vývojové prostředí.
Příklady
Následující příklad ukazuje způsob použití objektu ladicí program.
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;
}