Core Interfaces
Applies to: Visual Studio Visual Studio for Mac
Note
This article applies to Visual Studio 2017. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
The following interfaces are the core interfaces for extending debugger by using the Visual Studio SDK.
Discussion
These interfaces are primarily used to create the debug engine (DE). They are organized here by categories:
-
The entities that can implement the interfaces are:
Debug Engine (DE)
Port Supplier (PS)
Expression Evaluator (EE)
Visual Studio (VS)
Breakpoints
These interfaces are related to the implementation and tracking of breakpoints.
Interface | Implemented by | Description |
---|---|---|
IDebugBoundBreakpoint2 | DE | Represents a breakpoint bound to a memory location. |
IDebugBreakpointBoundEvent2 | DE | Sent by the DE when a breakpoint is bound to a memory location. |
IDebugBreakpointChecksumRequest2 | VS | Represents a document checksum for a breakpoint request. |
IDebugBreakpointErrorEvent2 | DE | Sent by the DE when a breakpoint fails to be bound to a memory location. |
IDebugBreakpointEvent2 | DE | Sent by the DE when a breakpoint is reached. |
IDebugBreakpointRequest2 | VS | Represents a request for a breakpoint; used in creating a pending breakpoint. |
IDebugBreakpointRequest3 | VS | Represents a request for a breakpoint; used in creating a pending breakpoint. |
IDebugBreakpointResolution2 | DE | Represents the information used to bind a breakpoint. |
IDebugBreakpointUnboundEvent2 | DE | Sent by the DE when a breakpoint is unbound from a memory location. |
IDebugErrorBreakpoint2 | DE | Represents an invalid breakpoint (returned by IDebugBreakpointErrorEvent2 ). |
IDebugErrorBreakpointResolution2 | DE | Represents the resolution information about an invalid breakpoint. |
IDebugFunctionPosition2 | DE | Represents a position in a function where a breakpoint is set. |
IDebugPendingBreakpoint2 | DE | Represents a breakpoint that is to be bound; used in creating a bound breakpoint. |
IEnumDebugBoundBreakpoints2 | DE | Represents an enumeration over a set of bound breakpoints. |
IEnumDebugErrorBreakpoints2 | DE | Represents an enumeration over a set of breakpoints that could not be bound to a memory location. |
Contexts
These interfaces represent various kinds of contexts within the program being debugged.
Interface | Implemented by | Description |
---|---|---|
IDebugCodeContext2 | DE | Represents the starting position of a code instruction. |
IDebugCodeContext3 | DE | Extends the IDebugCodeContext2 interface to enable the retrieval of module and process interfaces. |
IDebugDocumentContext2 | VS, DE | Represents a position in a document. |
IDebugExpressionContext2 | DE | Represents the context in which to evaluate an expression. |
IDebugMemoryContext2 | DE | Represents the starting location in memory of a collection of bytes. |
IDebugStackFrame2 | DE | Represents a stack frame context at a breakpoint or exception. |
IDebugStackFrame3 | DE | Represents a stack frame context at a breakpoint or exception. |
IEnumDebugCodeContexts2 | DE | Represents an enumeration over a set of code contexts. |
Core Server
These interfaces represent the machine on which a program is being debugged. These are implemented by Visual Studio but can be called into by debug engines.
Interface | Implemented by | Description |
---|---|---|
IDebugCoreServer2 | VS | Provides access to ports and port suppliers as well as information about the computer. |
IDebugCoreServer3 | VS | Represents an IDebugCoreServer2 that supports remote debugging. |
Debug Engines
These interfaces represent debug engines and their associated events.
Interface | Implemented by | Description |
---|---|---|
IDebugEngine2 | DE | Represents a custom debug engine. |
IDebugEngine3 | DE | Represents a custom debug engine that supports loading of symbols, JustMyCode, and exceptions. |
IDebugEngineCreateEvent2 | DE | Sent by each new instance of the DE to indicate it is ready to handle debugging tasks. |
IDebugEngineLaunch2 | DE | Represents a custom debug engine that supports launching programs. |
IDebugProgramEngines2 | DE, PS | Represents a program node that handles multiple debug engines. |
IDebugQueryEngine2 | DE | Provides a way for the SDM to obtain an interface to the debug engine from a thread, program, or stack frame. |
Documents
These interfaces represent documents (source files) and their associated elements.
Interface | Implemented by | Description |
---|---|---|
IDebugActivateDocumentEvent2 | DE | Sent by the DE to request a document to be opened. |
IDebugDisassemblyStream2 | DE | Represents a stream of disassembled instructions from a document. |
IDebugDocument2 | VS, DE | Represents a document supplied by the DE, specifying a name and a class ID (CLSID). |
IDebugDocumentChecksum2 | DE, EE | Represents a checksum for a debug document and enables passing the checksum between components. |
IDebugDocumentContext2 | VS, DE | Represents a document context, a position within a document corresponding to a particular statement and code context. |
IDebugDocumentPosition2 | VS, DE | Represents a general position within a document. |
IDebugDocumentPositionOffset2 | VS | Represents a position in a source file as a character offset. |
IDebugDocumentText2 | VS, DE | Represents a text document supplied by the DE (derived from IDebugDocument2), supplying the actual text. |
IDebugDocumentTextEvents2 | DE | Sent by the DE to specify changes to a source file that is in memory. |
Events
These interfaces represent all events that are sent between the DE and the session debug manager (SDM).
Interface | Implemented by | Description |
---|---|---|
IDebugActivateDocumentEvent2 | DE | Sent by the DE to request a document to be opened. |
IDebugBeforeSymbolSearchEvent2 | DE | The debug engine (DE) sends this interface to the session debug manager (SDM) to set the status bar message during symbol loads. |
IDebugBreakEvent2 | DE | Sent by the DE when a break in the program has been completed. |
IDebugBreakpointBoundEvent2 | DE | Sent by the DE when a breakpoint is bound. |
IDebugBreakpointErrorEvent2 | DE | Sent by the DE when a breakpoint fails to be bound. |
IDebugBreakpointEvent2 | DE | Sent by the DE when a breakpoint is reached. |
IDebugBreakpointUnboundEvent2 | DE | Sent by the DE when a breakpoint is unbound. |
IDebugCanStopEvent2 | DE | Sent by the DE to determine whether it should stop at a particular location. |
IDebugDocumentTextEvents2 | DE | Sent by the DE to specify changes to a source file that is in memory. |
IDebugEngineCreateEvent2 | DE | Sent by each new instance of the DE to indicate it is ready to handle debugging tasks. |
IDebugEntryPointEvent2 | DE | Sent by the DE to indicate the program being debugged is ready to execute the first instruction. |
IDebugErrorEvent2 | DE | An interface that is used by other event interfaces, which might return an error, to provide human-readable error messages. |
IDebugEvent2 | DE, PS | Base interface from which all other event interfaces are derived. |
IDebugEventCallback2 | VS | Represents an interface implemented by the SDM to which events (expressed as objects implementing a particular event interface) are sent. |
IDebugExceptionEvent2 | DE | Sent by the DE when an exception has occurred in the program being debugged. |
IDebugExpressionEvaluationCompleteEvent2 | DE | Sent by the DE when an asynchronous expression evaluation is complete. |
IDebugFindSymbolEvent2 | OBSOLETE. DO NOT USE. | |
IDebugInterceptExceptionCompleteEvent2 | DE | Sent by the DE when processing for an intercepted exception has been completed. |
IDebugLoadCompleteEvent2 | DE | Sent by the DE when a program has completed loading. |
IDebugMessageEvent2 | DE | Sent by the DE to have the IDE display an informational message to the user. |
IDebugModuleLoadEvent2 | DE | Sent by the DE when a module is loaded or unloaded. |
IDebugNoSymbolsEvent2 | DE | Signals the Visual Studio debugger UI to warn the user that symbols could not be located for the launched executable. |
IDebugOutputStringEvent2 | DE | Sent by the DE to have the IDE display an arbitrary string. |
IDebugPortEvents2 | VS, DE | Sent by a port to communicate port events to any listener. |
IDebugProcessCreateEvent2 | DE, PS | Sent by the DE or port when a process has been created. |
IDebugProcessDestroyEvent2 | DE, PS | Sent by the DE or port when a process has been destroyed. |
IDebugProgramCreateEvent2 | DE, PS | Sent by the DE or port when a program has been created. |
IDebugProgramDestroyEvent2 | DE, PS | Sent by the DE or port when a program has been destroyed. |
IDebugProgramDestroyEventFlags2 | DE | Enables a debug engine to override the default behavior of the Visual Studio UI when you end a debug session. |
IDebugProgramNameChangedEvent2 | DE | Sent from the debug engine (DE) to the session debug manager (SDM) when the name of a program changes. |
IDebugPropertyCreateEvent2 | DE | Sent by the DE when a new property (represented by the IDebugProperty2 interface) has been created. |
IDebugPropertyDestroyEvent2 | DE | Sent by the DE when a property has been destroyed. |
IDebugReturnValueEvent2 | DE | Sent by the DE when stepping out of or over a function so the return value can be correctly displayed. |
IDebugSettingsCallback2 | VS | Enables debug engines to read metric settings remotely. |
IDebugStepCompleteEvent2 | DE | Sent by the DE when a step into, over, or out of an instruction has been completed. |
IDebugSymbolSearchEvent2 | DE | Sent by the DE to indicate the success or failure of loading symbols for a module. |
IDebugThreadCreateEvent2 | DE | Sent by the DE when a thread has been created. |
IDebugThreadDestroyEvent2 | DE | Sent by the DE when a thread has been destroyed. |
IDebugThreadNameChangedEvent2 | DE | Sent by the DE when a thread has changed its name. |
Expressions
These interfaces represent expressions to be evaluated in a particular context.
Interface | Implemented by | Description |
---|---|---|
IDebugExpression2 | DE | Represents an expression to be evaluated. Obtained from the IDebugExpressionContext2 interface. |
IDebugExpressionContext2 | DE | Represents a context in which an expression is evaluated. Obtained from the IDebugStackFrame2 interface. |
IDebugExpressionEvaluationCompleteEvent2 | DE | Sent by the DE when an asynchronous expression evaluation is complete. |
Memory
These interfaces represent sequences of bytes in memory.
Interface | Implemented by | Description |
---|---|---|
IDebugMemoryBytes2 | DE | Represents a sequence of bytes in memory that can be read from or written to. |
IDebugMemoryContext2 | DE | Represents a location in memory of a sequence of bytes. |
Modules
These interfaces represent a module, which corresponds to an executable or .DLL file.
Interface | Implemented by | Description |
---|---|---|
IDebugModule2 | DE | Represents a single executable or DLL. |
IDebugModule3 | DE | Represents an IDebugModule2 that supports symbols. |
IDebugModuleLoadEvent2 | DE | Sent by the DE when a module is loaded or unloaded. |
IDebugSourceServerModule | DE | Represents the source server information that is contained in a PDB file. |
IEnumDebugModules2 | DE | Represents an enumeration over a set of modules that are known by an IDebugProgram2. |
Ports
These interfaces represent ports and port suppliers.
Interface | Implemented by | Description |
---|---|---|
IDebugDefaultPort2 | VS, PS | Represents the default port on the local computer. |
IDebugFirewallConfigurationCallback2 | VS | Enables a debug engine that uses DCOM to ask the Visual Studio UI to make sure that the firewall will not block remote debugging. |
IDebugPort2 | VS, PS | Represents a port. |
IDebugPortEvents2 | PS | Sent by a port to communicate port events to any listener. |
IDebugPortEx2 | PS | Represents a port that can launch and terminate processes. |
IDebugPortNotify2 | PS | Used to register and unregister programs with a port; allows the port to track programs currently being debugged. |
IDebugPortPicker | PS | Represents a customized UI for selecting the port. |
IDebugPortRequest2 | VS | Represents a request for a port from which a new port will be created or located. |
IDebugPortSupplier2 | PS | Represents a supplier of ports. |
IDebugPortSupplier3 | PS | Represents a supplier of ports that can persist (save to disk) information about the ports it created. |
IDebugPortSupplierDescription2 | PS | Enables the Visual Studio UI to display text inside the Transport Information section of the Attach to Process dialog box. |
IDebugWindowsComputerPort2 | VS | Allows querying for information about the target computer. |
IEnumDebugPorts2 | VS, PS | Represents an enumeration over a set of ports. |
IEnumDebugPortSuppliers2 | VS | Represents an enumeration over a set of port suppliers. |
Processes
These interfaces represent processes, a single executable that contains one or more programs.
Interface | Implemented by | Description |
---|---|---|
IDebugProcess2 | PS, DE | Represents a process that is running on a computer. |
IDebugProcess3 | PS, DE | Represents a process that actively supports debugging (used to replace Step, Continue, and Execute methods on the IDebugProgram2 interface). |
IDebugProcessCreateEvent2 | DE, PS | Sent by the DE or port when a process has been created. |
IDebugProcessDestroyEvent2 | DE, PS | Sent by the DE or port when a process has been destroyed. |
IDebugProcessEx2 | PS | Represents a process that must track which session is attached to it. |
IEnumDebugProcesses2 | PS | Represents an enumeration of a set of processes on a port. |
Programs
These interfaces represent programs, logical units of execution that do not necessarily correspond to a physical executable or module.
Interface | Implemented by | Description |
---|---|---|
IDebugEngineProgram2 | DE | Represents an IDebugProgram2 that needs to work in concert with other programs being debugged at the same time. |
IDebugProgram2 | DE, PS | Represents a logical unit of execution. |
IDebugProgramCreateEvent2 | DE, PS | Sent by the DE or port when a program has been created. |
IDebugProgramDestroyEvent2 | DE, PS | Sent by the DE or port when a program has been destroyed. |
IDebugProgramEngines2 | DE, PS | Represents an IDebugProgramNode2 that can be handled by multiple debug engines. |
IDebugProgramEx2 | PS | Represents an IDebugProgram2 that must be able to track which session is attached to it. |
IDebugProgramHost2 | DE, PS | Represents an IDebugProgram2 that can return information about the process in which it is running. |
IDebugProgramNode2 | DE, PS | Represents a program that can be debugged. |
IDebugProgramNodeAttach2 | DE, PS | Allows a program node to be notified of an attempt to attach to the associated program. |
IDebugProgramProvider2 | DE | Provides a way for the SDM to query a DE about the programs controlled by that DE. |
IDebugProgramPublisher2 | VS | Used by DEs to register programs with the SDM to show they are being debugged. |
IDebugProviderProgramNode2 | DE, PS | Represents an IDebugProgramNode2 that can marshal interfaces across thread or process boundaries. |
IEnumDebugPrograms2 | DE, PS | Represents an enumeration of a set of programs. |
Properties
These interfaces represent properties, a value associated with a particular context, usually the result of an expression evaluation.
Interface | Implemented by | Description |
---|---|---|
IDebugCustomViewer | EE | Represents an IDebugProperty2 that can display its value in a custom way. |
IDebugProperty2 | DE | Represents a value of a stack frame, document, or the result of an expression evaluation. |
IDebugProperty3 | DE | Represents an IDebugProperty2 that supports arbitrarily long strings. |
IDebugPropertyCreateEvent2 | DE | Sent by the DE when a new property (represented by the IDebugProperty2 interface) has been created. |
IDebugPropertyDestroyEvent2 | DE | Sent by the DE when a property has been destroyed. |
IDebugReference2 | DE | Represents a reference to a property which can exist outside any particular stack frame. |
IEnumDebugPropertyInfo2 | DE | Represents an enumeration over a set of DEBUG_PROPERTY_INFO structures which describe variables, registers, parameters, and expressions. |
IEnumDebugReferenceInfo2 | DE | Represents an enumeration over a set of DEBUG_REFERENCE_INFO structures. |
Stack Frames
These interfaces represent a stack frame, a context in which a breakpoint or exception has occurred.
Interface | Implemented by | Description |
---|---|---|
IDebugStackFrame2 | DE | Represents a context in which a breakpoint or exception has occurred. |
IDebugStackFrame3 | DE | Represents an IDebugStackFrame2 which can handle intercepted exceptions. |
IEnumCodePaths2 | DE | Represents an enumeration over the set of CODE_PATH structures which specify the function call sequence used to arrive at a particular stack frame. |
IEnumDebugFrameInfo2 | DE | Represents an enumeration over a set of FRAMEINFO structures, which describe stack frames. |
Threads
These interfaces represent threads and their associated events.
Interface | Implemented by | Description |
---|---|---|
IDebugThread2 | DE | Represents a thread of execution. |
IDebugThreadCreateEvent2 | DE | Sent by the DE when a thread has been created. |
IDebugThreadDestroyEvent2 | DE | Sent by the DE when a thread has been destroyed. |
IDebugThreadNameChangedEvent2 | DE | Sent by the DE when a thread has changed its name. |
IEnumDebugThreads2 | DE | Represents an enumeration over a set of threads. |
Type Visualizers
These interfaces provide support for type visualizers. These interfaces are typically implemented by an expression evaluator.
Interface | Implemented by | Description |
---|---|---|
IEEDataStorage | EE | Represents an array of bytes to be presented to a type visualizer. |
IPropertyProxyEESide | EE | Provides methods for getting access to data to be passed to a type visualizer. |
IPropertyProxyProvider | EE | Represents a property that provides access to IPropertyProxyEESide implementations. |