Debugger - интерфейс
Объект Debugger используется для опроса и управления состоянием отладчика и отлаживаемой программы.
Пространство имен: EnvDTE
Сборка: EnvDTE (в EnvDTE.dll)
Синтаксис
'Декларация
<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
Тип Debugger предоставляет следующие члены.
Свойства
Имя | Описание | |
---|---|---|
AllBreakpointsLastHit | Возвращает коллекцию связанных точек останова, в которые произошло последнее одновременное попадание. | |
BreakpointLastHit | Возвращает последнюю точку останова, в которую произошло попадание. | |
Breakpoints | Возвращает коллекцию точек останова. | |
CurrentMode | Получает текущий режим отладчика в контексте интегрированной среды разработки (IDE). | |
CurrentProcess | Задает или получает активный процесс. | |
CurrentProgram | Задает или получает активную программу. | |
CurrentStackFrame | Задает или получает текущий кадр стека. | |
CurrentThread | Задает или получает текущий отлаживаемый поток. | |
DebuggedProcesses | Получает список отлаживаемых в текущий момент процессов. | |
DTE | Возвращает объект расширения верхнего уровня. | |
HexDisplayMode | Получает или задает значение, указывающее, выводятся ли выражения в шестнадцатеричном или десятичном формате. | |
HexInputMode | Получает или задает значение, указывающее, вычисляются ли выражения в шестнадцатеричном или десятичном формате. | |
Languages | Возвращает список языков, которые поддерживает отладчик. | |
LastBreakReason | Возвращает последнюю причину прерывания работы программы.Если программа выполняется, возвращает значение DBG_REASON_NONE. | |
LocalProcesses | Получает список процессов, выполняющихся в текущий момент на этом компьютере. | |
Parent | Получает ближайший родительский объект от объекта Debugger. |
В начало страницы
Методы
Имя | Описание | |
---|---|---|
Break | Вызывает приостановку выполнения указанного процесса, чтобы можно было проанализировать его состояние. | |
DetachAll | Отключается от всех вложенных программ. | |
ExecuteStatement | Выполняет указанный оператор.Если флаг TreatAsExpression принимает значение true, строка интерпретируется как выражение и результат направляется в окно команд. | |
GetExpression | Вычисляет выражение на основании текущего кадра стека.Если выражение можно проанализировать, но не вычислить, то объект возвращается, но он не будет содержать допустимое значение. | |
Go | Запускает выполнение программы, начиная с текущего оператора. | |
RunToCursor | Выполняет программу до текущего положения курсора в исходном файле. | |
SetNextStatement | Указывает оператор, который будет выполнен следующим, в соответствии с позицией курсора в текущем исходном файле. | |
StepInto | При возможности выполняет шаг с заходом в следующий вызов функции. | |
StepOut | Выходит из текущей функции. | |
StepOver | Обходит вызов следующей функции. | |
Stop | Прекращает отладку, завершение или отсоединение от всех прикрепленных процессов. | |
TerminateAll | Завершает все процессы. |
В начало страницы
Заметки
Отладчик доступен через объект DTE через его свойство Debugger, как показано в приведенном ниже примере. Для каждого экземпляра среды разработки доступен один объект отладчика.
Примеры
В следующем примере демонстрируется применение объекта 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;
}