Microsoft.VisualStudio.Debugger Namespace

Classes

DkmBaseDebugMonitorId

DkmBaseDebugMonitorId identifies the base debug monitor used to inspect and control the debugged process. For example, DkmBaseDebugMonitorId.WindowsProcess is used for processes debugged by the Win32 debugging API and DkmBaseDebugMonitorId.DumpFile is used for minidumps.

DkmComponentManager

Provides services from the Dispatcher for initializing threads.

DkmCustomMessage

Message structure used to pass information between custom debugger backend components and custom visual studio UI components (packages, add-ins, etc).

DkmDataContainer

DkmDataContainer is a building block which is used throughout this API. It allows many of the objects in this API to contain 'virtual fields' which are added by any component in the system. This is similar to a type-safe version of the 'expando' concept in JScript.

Rules for DkmDataContainer:

  1. All the 'reference' objects in the system inherit from DkmDataContainer. Reference objects are tracked by the dispatcher component of this system, and at various marshalling points (managed->native, native->managed, remoting) the object reference identity is preserved. 'Value' objects do not inherit from DkmDataContainer because the system does not track these objects, so at any marshalling transition, the value of the object is copied.
  2. The 'virtual fields' of these objects which inherit from DkmDataContainer are called data items.
  3. Data items are PRIVATE to the component that added them. This feature cannot be used to share fields across component boundaries.
  4. Data items are instances of a data item class. In managed code, data item classes inherit from DkmDataItem to identify them as a data item. In native code, data items inherit from IUnknown.
  5. Usually, a component would never need to remove a data item. This is because data items are automatically removed when the container object is closed.
DkmDataItem

'DkmDataItem' is the base class for all data item classes. See 'DkmDataContainer' for more information.

DkmEngineId

These are the 'standard' engine GUID values. It is expected that this list will grow over time, so where possible, it is recommended to query for a setting instead of comparing the EngineId.

DkmEngineSettings

Contains the session-wide debug settings. There is one instance of this object per engine Guid (ex: one instance for COMPlusOnlyEng2, one instance for COMPlusNativeEng).

DkmEventDescriptor

Describes the event being processed.

DkmEventDescriptorS

Describes the event being processed and provides the ability for a component to suppress this event.

DkmException

Base exception class for all exceptions within this API.

DkmGlobalSettings

Static class containing settings which are global to the debugger process

DkmInstructionAddress

Abstract representation of an executable code location (ex: EIP value). If resolved, an Instruction Address will be within a particular module instance. An Instruction Address is always within a particular Runtime Instance.

Derived classes: DkmClrInstructionAddress, DkmClrNcInstructionAddress, DkmCustomInstructionAddress, DkmNativeInstructionAddress, DkmScriptInstructionAddress, DkmUnknownInstructionAddress

DkmInstructionAddress.CPUInstruction

CPUInstruction provides the address that the CPU will execute. This is always provided for native instructions. It may be provided for CLR or custom addresses depending on how the address object was created.

DkmLanguageRegistrySetting

Pairing between the name of a setting and its value.

DkmModuleInstance

The Module Instance class represent a code bundle (ex: dll or exe) which is loaded into a particular process at a particular location. Module Instance objects are 1:1 with the execution environment's notion of a code bundle. For example, in native code, Module Instance objects are 1:1 with base address.

Derived classes: DkmClrModuleInstance, DkmClrNcModuleInstance, DkmCustomModuleInstance, DkmNativeModuleInstance, DkmClrNcContainerModuleInstance

DkmModuleInstance.MinidumpInfo

'MinidumpInfo' is used to convey additional information about modules in a DkmProcess for a minidump.

DkmModuleVersion

File version information.

DkmPerformanceCounters

Process execution counters collection.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

DkmProcess

DkmProcess represents a target process which is being debugged. The debugger debugs processes, so this is the basic unit of debugging. A DkmProcess can represent a system process or a virtual process such as minidumps.

DkmProcess.Live

Information relevant to a running process. For example, this Part will NOT be present for minidumps.

DkmProcessExecutionCounters

Stores a QPC timestamp for a process stop/resume event.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

DkmProcessSnapshot

DkmProcessSnapshot represents a snapshot that's captured about a running process.

This API was introduced in Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3).

DkmReadOnlyByteCollection

An implementation of ReadOnlyCollection that can provide a pointer to the underlying native memory. Currently this class is only used for ReadOnlyCollections storing bytes when the value is passed through a Concord API call.

DkmRegistryTweak

A key/value pair read from the registry.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

DkmRuntimeId

The Runtime Id identifies the execution environment for a particular piece of code. Runtime Ids are used by the dispatcher to decide which monitor to dispatch to. Note that the ordering of the runtime ID Guids is somewhat significant as this dictates which runtime gets the first shot during arbitration. Thus, if one wants to declare a new runtime instance which is built on the CLR, the runtime id should be less than DkmRuntimeId.Clr.

DkmRuntimeInstance

The DkmRuntimeInstance class represents an execution environment which is loaded into a DkmProcess and which contains code to be debugged.

Derived classes: DkmClrRuntimeInstance, DkmClrNcRuntimeInstance, DkmCustomRuntimeInstance, DkmNativeRuntimeInstance, DkmScriptRuntimeInstance, DkmNativeDwarfRuntimeInstance, DkmOpenEnclaveRuntimeInstance

DkmSourceId

Identifies the source of an object. SourceIds are used to enable filtering in scenarios when multiple components may be creating instances of a class. For example, source ids can be used to determine if a breakpoint comes from the AD7 AL (ex: user breakpoint, or other breakpoint visible at the SDM level) instead of a breakpoint which may be created by another component (for example an internal breakpoint used for stepping).

DkmThread

DkmThread represents a thread running in the target process.

Derived classes: DkmGPUComputeThread, DkmVirtualThread

DkmThread.System

Describes traits of the thread which are relevant to a full Win32 thread. Currently, this value is required, and all threads will have a 'System' block. In the future, this value may be NULL if the DkmThread represents something other than a full Win32 thread.

DkmTraceTimeContext

A point of time within a time travel trace. The internal representation is an implementation detail of the creator.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

DkmUnknownInstructionAddress

Represents an address which could not be resolved to a module.

DkmUserMessage

Contains information about a message that is to be displayed to the user.

DkmVirtualThread

DkmVirtualThread represents a thread that does not physically exist in the debugged process.

This API was introduced in Visual Studio 16 Update 2 (DkmApiVersion.VS16Update2).

DkmWaitUIOperation

Represents an operation which is happening on the debugger backend, and which may be slow, so the user should be informed if it winds up taking longer the specified delay.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

DkmWorkList

Collection of asynchronous work items which are processed together. Work items are appended by calling any of the asynchronous methods throughout this API. Work items may be appended freely until the work list begins execution. Once execution has begun, additional work may only be appended from the implementation of a work item processing interface, or from a completion routine.

Structs

DkmDisplayUserMessagePromptAsyncResult

Result of an asynchronous DkmUserMessage.DisplayPrompt call.

DkmGetCurrentCPUAddressAsyncResult

Result of an asynchronous DkmInstructionAddress.GetCurrentCPUAddress call.

DkmGetInstructionAddressAsyncResult

Result of an asynchronous DkmProcess.GetInstructionAddress call.

DkmGetRelativeInstructionAddressAsyncResult

Result of an asynchronous DkmProcess.GetInstructionAddress call.

DkmModuleInstanceIsUserCodeAsyncResult

Result of an asynchronous DkmModuleInstance.IsUserCode call.

DkmPerformanceCountersAsyncResult

Result of an asynchronous DkmProcess.QueryPerformanceCounters call.

DkmResolveCPUInstructionAddressAsyncResult

Result of an asynchronous DkmRuntimeInstance.ResolveCPUInstructionAddress call.

DkmRuntimeInstanceId

Identifies a DkmRuntimeInstance object within a process.

DkmSendLowerAsyncResult

Result of an asynchronous DkmCustomMessage.SendLower call.

DkmTryLoadBinaryAsyncResult

Result of an asynchronous DkmModuleInstance.TryLoadBinary call.

DkmXmm128

DkmXmm128 represents the content of a 128-bit XMM register on x64 systems

Enums

DkmApiVersion

Enumeration code of the various versions of this API.

DkmAsyncBreakStatus

Indicates the type of async-break that occurred.

DkmClientUI

Specifies the type of User Interface that is driving an instance of the engine.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

DkmDataCreationDisposition

Action to be taken if the data item is already in the container.

DkmDispatcherObjectFlags

Internal flags indicating the current state of a dispatcher object.

DkmDumpType

Type of dump to save.

DkmEngineFlags

Flags that indicate immutable traits of this engine settings.

DkmEventCode

Enumeration of all events which are currently defined in this API.

DkmExceptionCode

Defines the HRESULT codes used by this API.

DkmFuncEvalAbortLoggingFlags

Flags to indicate what type of logging to perform on a func eval abort.

This API was introduced in Visual Studio 15 Update 4 (DkmApiVersion.VS15Update4).

DkmFuncEvalMode

Indicates if there is a function evaluation occurring in the target process and if stopping events are allowed for this evaluation.

DkmInstructionAddress.Tag

DkmInstructionAddress is an abstract base class. This enum indicates which derived class this object is an instance of.

DkmMemoryTimeFlags

Enumeration describing the time that a memory read resolves to with respect to the current process time.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

DkmModuleFlags

Flags which indicate traits of a DkmModuleInstance.

DkmModuleInstance.Tag

DkmModuleInstance is an abstract base class. This enum indicates which derived class this object is an instance of.

DkmModuleMemoryLayout

Enumeration that indicates how a module is laid out in memory.

DkmProcessExecuteDirection

Indicates the direction the process is executing in.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

DkmProcessorArchitecture
DkmReadMemoryFlags

Flags controlling the behavior of DkmProcess.ReadMemory and DkmProcess.ReadMemoryString.

DkmRuntimeCapabilities

Enumeration of runtime capabilities.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

DkmRuntimeInstance.Tag

DkmRuntimeInstance is an abstract base class. This enum indicates which derived class this object is an instance of.

DkmStoppingEventProcessingNextAction

Status code returned to the base debug monitor to indicate the next action to take in stopping event processing.

DkmUserMessageOutputKind

Indicates where a DkmUserMessage should be output within the debugger IDE.

DkmWaitUIOperationFlags

Flags for a DkmWaitUIOperation.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

DkmWorkListExecutionThread

Argument to DkmWorkList.BeginExecution to indicate where the work items in the work list should run.

DkmWorkListPriority

Priority class of worklists from High to Idle. @Note: Must be kept in sync with the managed definition.

ExceptionConditionCallStackBehavior
ExceptionConditionOperator
ExceptionConditionType
GCReferenceType
MessageBoxFlags
MinidumpFlags

Delegates

DkmCompletionRoutine<TResult>

Function which fires when an asynchronous request completes.

DkmWorkListCompletionRoutine

Optional function which is fired when the work list is complete, including firing all completion routines.