Поделиться через


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

См. также

Ссылки

EnvDTE - пространство имен

Другие ресурсы

Диаграмма модели объектов автоматизации

Отладка в Visual Studio