Базовые интерфейсы
Ниже приведены основные интерфейсы для расширения отладчика с помощью пакета SDK Для Visual Studio.
Обсуждение
Эти интерфейсы в основном используются для создания обработчика отладки (DE). Они организованы здесь по категориям:
-
Сущности, которые могут реализовать интерфейсы, являются следующими:
Обработчик отладки (DE)
Поставщик портов (PS)
Средство оценки выражений (EE)
Visual Studio (VS)
Точки останова
Эти интерфейсы связаны с реализацией и отслеживанием точек останова.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugBoundBreakpoint2 | DE | Представляет точку останова, привязанную к расположению памяти. |
IDebugBreakpointBoundEvent2 | DE | Отправляется de, когда точка останова привязана к расположению памяти. |
IDebugBreakpointChecksumRequest2 | VS | Представляет документ проверка сум для запроса точки останова. |
IDebugBreakpointErrorEvent2 | DE | Отправляется de, когда точка останова не привязана к расположению памяти. |
IDebugBreakpointEvent2 | DE | Отправляется de при достижении точки останова. |
IDebugBreakpointRequest2 | VS | Представляет запрос на точку останова; используется при создании ожидающей точки останова. |
IDebugBreakpointRequest3 | VS | Представляет запрос на точку останова; используется при создании ожидающей точки останова. |
IDebugBreakpointResolution2 | DE | Представляет сведения, используемые для привязки точки останова. |
IDebugBreakpointUnboundEvent2 | DE | Отправляется de, когда точка останова не связана с расположением памяти. |
IDebugErrorBreakpoint2 | DE | Представляет недопустимую точку останова (возвращается IDebugBreakpointErrorEvent2 ). |
IDebugErrorBreakpointResolution2 | DE | Представляет сведения о разрешении недопустимой точки останова. |
IDebugFunctionPosition2 | DE | Представляет позицию в функции, в которой задана точка останова. |
IDebugPendingBreakpoint2 | DE | Представляет точку останова, которая должна быть привязана; используется при создании связанной точки останова. |
IEnumDebugBoundBreakpoints2 | DE | Представляет перечисление по набору связанных точек останова. |
IEnumDebugErrorBreakpoints2 | DE | Представляет перечисление по набору точек останова, которые не могут быть привязаны к расположению памяти. |
Контексты
Эти интерфейсы представляют различные виды контекстов в отлаживаемой программе.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugCodeContext2 | DE | Представляет начальную позицию инструкции кода. |
IDebugCodeContext3 | DE | Расширяет интерфейс IDebugCodeContext2, чтобы включить извлечение интерфейсов модуля и процессов. |
IDebugDocumentContext2 | VS, DE | Представляет позицию в документе. |
IDebugExpressionContext2 | DE | Представляет контекст, в котором вычисляется выражение. |
IDebugMemoryContext2 | DE | Представляет начальное расположение в памяти коллекции байтов. |
IDebugStackFrame2 | DE | Представляет контекст кадра стека в точке останова или исключении. |
IDebugStackFrame3 | DE | Представляет контекст кадра стека в точке останова или исключении. |
IEnumDebugCodeContexts2 | DE | Представляет перечисление по набору контекстов кода. |
Основной сервер
Эти интерфейсы представляют компьютер, на котором выполняется отладка программы. Они реализованы Visual Studio, но могут вызываться обработчиками отладки.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugCoreServer2 | VS | Предоставляет доступ к портам и поставщикам портов, а также сведениям о компьютере. |
IDebugCoreServer3 | VS | Представляет IDebugCoreServer2, поддерживающий удаленную отладку. |
Обработчики отладки
Эти интерфейсы представляют подсистемы отладки и связанные с ними события.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugEngine2 | DE | Представляет пользовательский модуль отладки. |
IDebugEngine3 | DE | Представляет пользовательский модуль отладки, поддерживающий загрузку символов, JustMyCode и исключений. |
IDebugEngineCreateEvent2 | DE | Отправляется каждым новым экземпляром DE, чтобы указать, что он готов к обработке задач отладки. |
IDebugEngineLaunch2 | DE | Представляет пользовательский модуль отладки, поддерживающий запуск программ. |
IDebugProgramEngines2 | DE, PS | Представляет узел программы, обрабатывающий несколько обработчиков отладки. |
IDebugQueryEngine2 | DE | Предоставляет способ получения интерфейса подсистемы отладки из потока, программы или кадра стека. |
Документы
Эти интерфейсы представляют документы (исходные файлы) и связанные с ними элементы.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugActivateDocumentEvent2 | DE | Отправляется de de, чтобы запросить открытие документа. |
IDebugDisassemblyStream2 | DE | Представляет поток дизассеблированных инструкций из документа. |
IDebugDocument2 | VS, DE | Представляет документ, предоставленный DE, указав имя и идентификатор класса (CLSID). |
IDebugDocumentChecksum2 | DE, EE | Представляет проверка сум для отладочного документа и включает передачу проверка сумы между компонентами. |
IDebugDocumentContext2 | VS, DE | Представляет контекст документа, позицию в документе, соответствующую определенной инструкции и контексту кода. |
IDebugDocumentPosition2 | VS, DE | Представляет общую позицию в документе. |
IDebugDocumentPositionOffset2 | VS | Представляет позицию в исходном файле в виде смещения символов. |
IDebugDocumentText2 | VS, DE | Представляет текстовый документ, предоставленный DE (производный от IDebugDocument2), предоставляющий фактический текст. |
IDebugDocumentTextEvents2 | DE | Отправляется de de, чтобы указать изменения исходного файла, который находится в памяти. |
События
Эти интерфейсы представляют все события, отправляемые между DE и диспетчером отладки сеансов (SDM).
Интерфейс | Реализовано | Description |
---|---|---|
IDebugActivateDocumentEvent2 | DE | Отправляется de de, чтобы запросить открытие документа. |
IDebugBeforeSymbolSearchEvent2 | DE | Модуль отладки (DE) отправляет этот интерфейс в диспетчер отладки сеанса (SDM), чтобы задать сообщение строки состояния во время загрузки символов. |
IDebugBreakEvent2 | DE | Отправляется DE после завершения перерыва в программе. |
IDebugBreakpointBoundEvent2 | DE | Отправляется de, когда точка останова привязана. |
IDebugBreakpointErrorEvent2 | DE | Отправляется de, когда точка останова не привязана. |
IDebugBreakpointEvent2 | DE | Отправляется de при достижении точки останова. |
IDebugBreakpointUnboundEvent2 | DE | Отправляется de, когда точка останова не подключена. |
IDebugCanStopEvent2 | DE | Отправляется DE, чтобы определить, следует ли остановиться в определенном расположении. |
IDebugDocumentTextEvents2 | DE | Отправляется de de, чтобы указать изменения исходного файла, который находится в памяти. |
IDebugEngineCreateEvent2 | DE | Отправляется каждым новым экземпляром DE, чтобы указать, что он готов к обработке задач отладки. |
IDebugEntryPointEvent2 | DE | Отправляется de de, чтобы указать, что отлаживаемая программа готова выполнить первую инструкцию. |
IDebugErrorEvent2 | DE | Интерфейс, используемый другими интерфейсами событий, которые могут возвращать ошибку для предоставления сообщений об ошибках, доступных для чтения пользователем. |
IDebugEvent2 | DE, PS | Базовый интерфейс, из которого производны все остальные интерфейсы событий. |
IDebugEventCallback2 | VS | Представляет интерфейс, реализованный SDM, в который отправляются события (выраженные как объекты, реализующие определенный интерфейс событий). |
IDebugExceptionEvent2 | DE | Отправляется DE при возникновении исключения в отлаживаемой программе. |
IDebugExpressionEvaluationCompleteEvent2 | DE | Отправляется de при завершении асинхронной оценки выражений. |
IDebugFindSymbolEvent2 | Устаревшее. НЕ ИСПОЛЬЗУЙТЕ. | |
IDebugInterceptExceptionCompleteEvent2 | DE | Отправлено DE при выполнении обработки перехватированного исключения. |
IDebugLoadCompleteEvent2 | DE | Отправляется DE после завершения загрузки программы. |
IDebugMessageEvent2 | DE | Отправляемый de, чтобы интегрированная среда разработки отображала информационное сообщение пользователю. |
IDebugModuleLoadEvent2 | DE | Отправляется de при загрузке или выгрузке модуля. |
IDebugNoSymbolsEvent2 | DE | Сигнализирует пользовательскому интерфейсу отладчика Visual Studio, чтобы предупредить пользователя о том, что символы не могут находиться для запущенного исполняемого файла. |
IDebugOutputStringEvent2 | DE | Отправляемый de, чтобы интегрированная среда разработки отображала произвольную строку. |
IDebugPortEvents2 | VS, DE | Отправляется портом для передачи событий порта любому прослушивателю. |
IDebugProcessCreateEvent2 | DE, PS | Отправляется de или port при создании процесса. |
IDebugProcessDestroyEvent2 | DE, PS | Отправляется de или port при уничтожении процесса. |
IDebugProgramCreateEvent2 | DE, PS | Отправляется de или port при создании программы. |
IDebugProgramDestroyEvent2 | DE, PS | Отправляется ДЕ или портом при уничтожении программы. |
IDebugProgramDestroyEventFlags2 | DE | Позволяет подсистеме отладки переопределить поведение пользовательского интерфейса Visual Studio по умолчанию при завершении сеанса отладки. |
IDebugProgramNameChangedEvent2 | DE | Отправляется из обработчика отладки (DE) в диспетчер отладки сеанса (SDM) при изменении имени программы. |
IDebugPropertyCreateEvent2 | DE | Отправляется de при создании нового свойства (представленного интерфейсом IDebugProperty2 ). |
IDebugPropertyDestroyEvent2 | DE | Отправляется DE при уничтожении свойства. |
IDebugReturnValueEvent2 | DE | Отправляется de при выходе из функции или из нее, чтобы возвращаемое значение можно было правильно отобразить. |
IDebugSettingsCallback2 | VS | Позволяет модулям отладки удаленно считывать параметры метрик. |
IDebugStepCompleteEvent2 | DE | Отправляется de при завершении шага в инструкцию или из нее. |
IDebugSymbolSearchEvent2 | DE | Отправляется de de, чтобы указать успешность или сбой загрузки символов для модуля. |
IDebugThreadCreateEvent2 | DE | Отправляется DE при создании потока. |
IDebugThreadDestroyEvent2 | DE | Отправляется DE при уничтожении потока. |
IDebugThreadNameChangedEvent2 | DE | Отправляется de, когда поток изменил свое имя. |
Выражения
Эти интерфейсы представляют выражения, которые будут оцениваться в определенном контексте.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugExpression2 | DE | Представляет выражение для вычисления. Получен из интерфейса IDebugExpressionContext2 . |
IDebugExpressionContext2 | DE | Представляет контекст, в котором вычисляется выражение. Получен из интерфейса IDebugStackFrame2 . |
IDebugExpressionEvaluationCompleteEvent2 | DE | Отправляется de при завершении асинхронной оценки выражений. |
Память
Эти интерфейсы представляют последовательности байтов в памяти.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugMemoryBytes2 | DE | Представляет последовательность байтов в памяти, в которую можно считывать или записывать в нее. |
IDebugMemoryContext2 | DE | Представляет расположение в памяти последовательности байтов. |
Модули
Эти интерфейсы представляют модуль, соответствующий исполняемому файлу или DLL-файлу.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugModule2 | DE | Представляет один исполняемый файл или библиотеку DLL. |
IDebugModule3 | DE | Представляет идентификатор IDebugModule2, поддерживающий символы. |
IDebugModuleLoadEvent2 | DE | Отправляется de при загрузке или выгрузке модуля. |
IDebugSourceServerModule | DE | Представляет сведения о исходном сервере, содержащиеся в PDB-файле. |
IEnumDebugModules2 | DE | Представляет перечисление по набору модулей, известных IDebugProgram2. |
Порты
Эти интерфейсы представляют порты и поставщики портов.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugDefaultPort2 | VS, PS | Представляет порт по умолчанию на локальном компьютере. |
IDebugFirewallConfigurationCallback2 | VS | Позволяет обработчику отладки, использующего DCOM, запрашивать пользовательский интерфейс Visual Studio, чтобы убедиться, что брандмауэр не блокирует удаленную отладку. |
IDebugPort2 | VS, PS | Представляет порт. |
IDebugPortEvents2 | PS | Отправляется портом для передачи событий порта любому прослушивателю. |
IDebugPortEx2 | PS | Представляет порт, который может запускать и завершать процессы. |
IDebugPortNotify2 | PS | Используется для регистрации и отмены регистрации программ с помощью порта; позволяет порту отслеживать отлаживаемые программы. |
IDebugPortPicker | PS | Представляет настраиваемый пользовательский интерфейс для выбора порта. |
IDebugPortRequest2 | VS | Представляет запрос на порт, из которого будет создан или расположен новый порт. |
IDebugPortSupplier2 | PS | Представляет поставщика портов. |
IDebugPortSupplier3 | PS | Представляет поставщика портов, которые могут сохранять (сохранять на диске) сведения о созданных портах. |
IDebugPortSupplierDescription2 | PS | Позволяет пользовательскому интерфейсу Visual Studio отображать текст в разделе "Сведения о транспорте" диалогового окна "Присоединение к процессу ". |
IDebugWindowsComputerPort2 | VS | Позволяет запрашивать сведения о целевом компьютере. |
IEnumDebugPorts2 | VS, PS | Представляет перечисление по набору портов. |
IEnumDebugPortSuppliers2 | VS | Представляет перечисление по набору поставщиков портов. |
Процессы
Эти интерфейсы представляют процессы, один исполняемый файл, содержащий одну или несколько программ.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugProcess2 | PS, DE | Представляет процесс, выполняющийся на компьютере. |
IDebugProcess3 | PS, DE | Представляет процесс, активно поддерживающий отладку (используется для замены методов Step, Continue и Execute в интерфейсе IDebugProgram2 ). |
IDebugProcessCreateEvent2 | DE, PS | Отправляется de или port при создании процесса. |
IDebugProcessDestroyEvent2 | DE, PS | Отправляется de или port при уничтожении процесса. |
IDebugProcessEx2 | PS | Представляет процесс, который должен отслеживать присоединенный к нему сеанс. |
IEnumDebugProcesses2 | PS | Представляет перечисление набора процессов на порту. |
Programs
Эти интерфейсы представляют программы, логические единицы выполнения, которые не обязательно соответствуют физическому исполняемому файлу или модулю.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugEngineProgram2 | DE | Представляет IDebugProgram2, который должен работать в концерте с другими программами, отлаживающимися одновременно. |
IDebugProgram2 | DE, PS | Представляет логическую единицу выполнения. |
IDebugProgramCreateEvent2 | DE, PS | Отправляется de или port при создании программы. |
IDebugProgramDestroyEvent2 | DE, PS | Отправляется ДЕ или портом при уничтожении программы. |
IDebugProgramEngines2 | DE, PS | Представляет идентификатор IDebugProgramNode2, который может обрабатываться несколькими обработчиками отладки. |
IDebugProgramEx2 | PS | Представляет идентификатор IDebugProgram2, который должен быть в состоянии отслеживать, к какой сеансу подключен. |
IDebugProgramHost2 | DE, PS | Представляет идентификатор IDebugProgram2, который может возвращать сведения о процессе выполнения. |
IDebugProgramNode2 | DE, PS | Представляет программу, которую можно отладить. |
IDebugProgramNodeAttach2 | DE, PS | Позволяет узлу программы получать уведомления о попытке подключения к связанной программе. |
IDebugProgramProvider2 | DE | Предоставляет возможность SDM запрашивать DE о программах, контролируемых этим DE. |
IDebugProgramPublisher2 | VS | Используется DEs для регистрации программ с помощью SDM для отображения их отладки. |
IDebugProviderProgramNode2 | DE, PS | Представляет идентификатор IDebugProgramNode2, который может маршалить интерфейсы через границы потока или процесса. |
IEnumDebugPrograms2 | DE, PS | Представляет перечисление набора программ. |
Свойства
Эти интерфейсы представляют свойства, значение, связанное с определенным контекстом, обычно результат вычисления выражения.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugCustomViewer | EE | Представляет идентификатор IDebugProperty2, который может отображать его значение настраиваемым способом. |
IDebugProperty2 | DE | Представляет значение кадра стека, документа или результата вычисления выражения. |
IDebugProperty3 | DE | Представляет идентификатор IDebugProperty2, поддерживающий произвольные длинные строки. |
IDebugPropertyCreateEvent2 | DE | Отправляется de при создании нового свойства (представленного интерфейсом IDebugProperty2 ). |
IDebugPropertyDestroyEvent2 | DE | Отправляется DE при уничтожении свойства. |
IDebugReference2 | DE | Представляет ссылку на свойство, которое может существовать вне любого определенного кадра стека. |
IEnumDebugPropertyInfo2 | DE | Представляет перечисление по набору DEBUG_PROPERTY_INFO структур, описывающих переменные, регистры, параметры и выражения. |
IEnumDebugReferenceInfo2 | DE | Представляет перечисление по набору DEBUG_REFERENCE_INFO структур. |
Кадры стека
Эти интерфейсы представляют кадр стека, контекст, в котором произошла точка останова или исключение.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugStackFrame2 | DE | Представляет контекст, в котором произошла точка останова или исключение. |
IDebugStackFrame3 | DE | Представляет IDebugStackFrame2, который может обрабатывать перехватанные исключения. |
IEnumCodePaths2 | DE | Представляет перечисление по набору структур CODE_PATH, которые указывают последовательность вызовов функции, используемую для поступления в определенный кадр стека. |
IEnumDebugFrameInfo2 | DE | Представляет перечисление по набору структур FRAMEINFO , описывающих кадры стека. |
Потоки
Эти интерфейсы представляют потоки и связанные с ними события.
Интерфейс | Реализовано | Description |
---|---|---|
IDebugThread2 | DE | Представляет поток выполнения. |
IDebugThreadCreateEvent2 | DE | Отправляется DE при создании потока. |
IDebugThreadDestroyEvent2 | DE | Отправляется DE при уничтожении потока. |
IDebugThreadNameChangedEvent2 | DE | Отправляется de, когда поток изменил свое имя. |
IEnumDebugThreads2 | DE | Представляет перечисление по набору потоков. |
Визуализаторы типов
Эти интерфейсы обеспечивают поддержку визуализаторов типов. Обычно эти интерфейсы реализуются вычислителем выражений.
Интерфейс | Реализовано | Description |
---|---|---|
IEEDataStorage | EE | Представляет массив байтов, который будет представлен визуализатору типов. |
IPropertyProxyEESide | EE | Предоставляет методы для получения доступа к данным, передаваемым визуализатору типов. |
IPropertyProxyProvider | EE | Представляет свойство, которое предоставляет доступ к реализации IPropertyProxyEESide . |