Udostępnij za pośrednictwem


DkmRuntimeHardwareDataBreakpoint Class

Definition

Low-level data breakpoint which is set using the hardware breakpoint registers of the CPU.

public ref class DkmRuntimeHardwareDataBreakpoint : Microsoft::VisualStudio::Debugger::Breakpoints::DkmRuntimeBreakpoint
[System.Runtime.InteropServices.Guid("3346103d-7c30-4ee9-c3dd-e8e7e9f66a5e")]
public class DkmRuntimeHardwareDataBreakpoint : Microsoft.VisualStudio.Debugger.Breakpoints.DkmRuntimeBreakpoint
[<System.Runtime.InteropServices.Guid("3346103d-7c30-4ee9-c3dd-e8e7e9f66a5e")>]
type DkmRuntimeHardwareDataBreakpoint = class
    inherit DkmRuntimeBreakpoint
Public Class DkmRuntimeHardwareDataBreakpoint
Inherits DkmRuntimeBreakpoint
Inheritance
DkmRuntimeHardwareDataBreakpoint
Inheritance
DkmRuntimeHardwareDataBreakpoint
Attributes

Properties

Access

Mask of reasons why the data breakpoint should fire. For example, if 'Write' is set, then the breakpoint will fire when the memory location is written.

Address

Address to stop on. This address must be suitably aligned to match the Size parameter (example: if Size is 4, Address must be a multiple of 4).

IsUnloaded

Returns true if a 'unloaded' event has been raised for this object (example: DkmThread::Unload is called) or if the object has been closed. Note that care must be used when checking this status as, without synchronization, the returned status may no longer be accurate the instruction after it is read.

(Inherited from DkmDataContainer)
Process

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.

(Inherited from DkmRuntimeBreakpoint)
RuntimeInstance

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

(Inherited from DkmRuntimeBreakpoint)
Size

Specifies the size of the location, in bytes, to monitor for access. On an x86-based processor, this parameter can be 1, 2, or 4. However, if Access is DkmDataAccessStopMask.Execute, Size must be 1. On an x64-based processor, this parameter can be 1, 2, 4, or 8. However, if Access equals Access is DkmDataAccessStopMask.Execute, Size must be 1. On an Itanium-based processor, this parameter can be any power of 2, from 1 to 0x80000000.

SourceId

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).

(Inherited from DkmRuntimeBreakpoint)
TagValue

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

(Inherited from DkmRuntimeBreakpoint)
Thread

[Optional] Thread on which this breakpoint should fire. If null, the breakpoint will fire on all threads.

(Inherited from DkmRuntimeBreakpoint)
UniqueId

Guid which uniquely identifies this pending breakpoint object.

(Inherited from DkmRuntimeBreakpoint)

Methods

ClearConditions()

Clear any compiled/evaluation condition associated with the specified DkmRuntimeBreakpoint. This method is implicitly called when the DkmRuntimeBreakpoint is closed.

(Inherited from DkmRuntimeBreakpoint)
ClearConditions(DkmWorkList, DkmCompletionRoutine<DkmClearRuntimeBreakpointConditionsAsyncResult>)

Clear any compiled/evaluation condition associated with the specified DkmRuntimeBreakpoint. This method is implicitly called when the DkmRuntimeBreakpoint is closed.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

(Inherited from DkmRuntimeBreakpoint)
ClearHitCountCondition(DkmBreakpointHitCountCondition, Int32)

Clears the hit count condition on a breakpoint.

(Inherited from DkmRuntimeBreakpoint)
ClearHitCountCondition(DkmWorkList, DkmBreakpointHitCountCondition, DkmCompletionRoutine<DkmClearRuntimeBreakpointHitCountConditionAsyncResult>)

Clears the hit count condition on a breakpoint.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

(Inherited from DkmRuntimeBreakpoint)
Close()

Closes the breakpoint object instance. This will release any resources associated with this object across all components. If the breakpoint is currently enabled, it will be implicitly disabled.

DkmRuntimeBreakpoint objects are automatically closed when their associated DkmRuntimeInstance object is closed.

This method may only be called by the component which created the object.

(Inherited from DkmRuntimeBreakpoint)
Create(DkmRuntimeInstance, Guid, DkmThread, UInt64, DkmDataAccessStopMask, Int32, DkmDataItem)

Creates a new DkmRuntimeHardwareDataBreakpoint object. After creation, the breakpoint is in the disabled state, and must be explicitly enabled. The caller is responsible for closing the created object after they are done.

Disable()

Disables a breakpoint. Disabling a breakpoint is typically implemented by modifying the state of the target process so the breakpoint will no longer fire. For example, removing a previously inserted 'int3' from the instruction stream. If the breakpoint is already disabled, this operation has no effect. In addition to this method, a breakpoint is implicitly disabled when it is closed.

If multiple breakpoints are set on the same instruction, disabling one breakpoint does not affect the other breakpoints set on this instruction.

This method may only be called by the component which created the object.

(Inherited from DkmRuntimeBreakpoint)
Disable(DkmWorkList, DkmCompletionRoutine<DkmDisableRuntimeBreakpointAsyncResult>)

Disables a breakpoint. Disabling a breakpoint is typically implemented by modifying the state of the target process so the breakpoint will no longer fire. For example, removing a previously inserted 'int3' from the instruction stream. If the breakpoint is already disabled, this operation has no effect. In addition to this method, a breakpoint is implicitly disabled when it is closed.

If multiple breakpoints are set on the same instruction, disabling one breakpoint does not affect the other breakpoints set on this instruction.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

This method may only be called by the component which created the object.

(Inherited from DkmRuntimeBreakpoint)
Enable()

Enables a breakpoint. Breakpoints start off initially disabled, so this method must be called before the breakpoint can be set. Enabling a breakpoint is typically implemented in the debug monitor by modifying the state of the target process. For example inserting an 'int3' instruction into the code stream. If the breakpoint is already enabled, this operation has no effect.

Once a breakpoint has been enabled, the debug monitor will raise a RuntimeBreakpoint event for this DkmRuntimeBreakpoint object whenever the trigger condition (ex: target instruction is executed) is met. Multiple DkmRuntimeBreakpoints may be set on the same instruction. In this case, the debug monitor will raise a different RuntimeBreakpoint event for each breakpoint object. Similarly, if a step complete and a breakpoint both complete on the same instruction, the debug monitor will raise both events.

This method may only be called by the component which created the object.

(Inherited from DkmRuntimeBreakpoint)
Enable(DkmWorkList, DkmCompletionRoutine<DkmEnableRuntimeBreakpointAsyncResult>)

Enables a breakpoint. Breakpoints start off initially disabled, so this method must be called before the breakpoint can be set. Enabling a breakpoint is typically implemented in the debug monitor by modifying the state of the target process. For example inserting an 'int3' instruction into the code stream. If the breakpoint is already enabled, this operation has no effect.

Once a breakpoint has been enabled, the debug monitor will raise a RuntimeBreakpoint event for this DkmRuntimeBreakpoint object whenever the trigger condition (ex: target instruction is executed) is met. Multiple DkmRuntimeBreakpoints may be set on the same instruction. In this case, the debug monitor will raise a different RuntimeBreakpoint event for each breakpoint object. Similarly, if a step complete and a breakpoint both complete on the same instruction, the debug monitor will raise both events.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

This method may only be called by the component which created the object.

(Inherited from DkmRuntimeBreakpoint)
EvaluateConditionAndSelectThread(DkmThread)

The base debug monitor asks the breakpoint condition processor to evaluate on all stopped threads, and selects the thread whose condition is true.

Location constraint: API must be called from a Monitor component (component level < 100,000).

This API was introduced in Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1).

(Inherited from DkmRuntimeBreakpoint)
EvaluateConditionAndSelectThread(DkmWorkList, DkmThread, DkmCompletionRoutine<DkmEvaluateConditionAndSelectThreadAsyncResult>)

The base debug monitor asks the breakpoint condition processor to evaluate on all stopped threads, and selects the thread whose condition is true.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

Location constraint: API must be called from a Monitor component (component level < 100,000).

This API was introduced in Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1).

(Inherited from DkmRuntimeBreakpoint)
GetCompiledCondition(DkmInstructionAddress, DkmBreakpointConditionOperator)

Call back invoked from the breakpoint condition processor to the breakpoint manager (or other component which calls SetCompiledConditionPending) when the breakpoint condition needs to be re-compiled for a new instruction address.

Location constraint: API must be called from a Monitor component (component level < 100,000).

(Inherited from DkmRuntimeBreakpoint)
GetDataItem<T>()

Gets the instance of 'T' which has been added to this container instance. If this container does not contain a 'T', this function will return null.

(Inherited from DkmDataContainer)
GetHitCountConditionStatus(DkmWorkList, DkmCompletionRoutine<DkmGetRuntimeBreakpointHitCountConditionAsyncResult>)

Obtains the current hit count value for a DkmRuntimeBreakpoint which has a hit count condition. This function will fail if the DkmRuntimeBreakpoint does not currently have a hit count condition.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

(Inherited from DkmRuntimeBreakpoint)
GetHitCountConditionStatus(Int32)

Obtains the current hit count value for a DkmRuntimeBreakpoint which has a hit count condition. This function will fail if the DkmRuntimeBreakpoint does not currently have a hit count condition.

(Inherited from DkmRuntimeBreakpoint)
OnBreakpointConditionFailed(DkmILFailureReason)

Call back invoked from the breakpoint condition processor to the breakpoint manager when a breakpoint condition encounters a runtime error.

Location constraint: API must be called from a Monitor component (component level < 100,000).

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

(Inherited from DkmRuntimeBreakpoint)
OnBreakpointConditionFailed(DkmThread, String, DkmILFailureReason)

Raise a RuntimeBreakpointConditionFailed event. Components which implement the event sink interface will receive the event notification. This method will enqueue the event and control will immediately return to the caller.

This API was introduced in Visual Studio 16 Update 3 (DkmApiVersion.VS16Update3).

(Inherited from DkmRuntimeBreakpoint)
OnBreakpointConditionFailed(String)

Call back invoked from the breakpoint condition processor to the breakpoint manager when a breakpoint condition encounters a runtime error.

Location constraint: API must be called from a Monitor component (component level < 100,000).

(Inherited from DkmRuntimeBreakpoint)
OnDataBreakpointHit(DkmThread, Boolean, String)

Raise a RuntimeDataBreakpointHit event. Components which implement the event sink interface will receive the event notification. This method will enqueue the event and control will immediately return to the caller.

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

(Inherited from DkmRuntimeBreakpoint)
OnError(DkmBreakpointMessageLevel, String)

This method will be called when an breakpoint has been invalid and needs to inform the UI.

Location constraint: This can be called from any component.

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

(Inherited from DkmRuntimeBreakpoint)
OnHit(DkmThread, Boolean)

Raise a RuntimeBreakpoint event. Components which implement the event sink interface will receive the event notification. This method will enqueue the event and control will immediately return to the caller.

(Inherited from DkmRuntimeBreakpoint)
OnHitWithError(DkmThread, Boolean, DkmBreakpointMessageLevel, String)

Raise a RuntimeBreakpointHitWithError event. Components which implement the event sink interface will receive the event notification. This method will enqueue the event and control will immediately return to the caller.

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

(Inherited from DkmRuntimeBreakpoint)
RemoveDataItem<T>()

Remove the instance of 'T' from this container. It is usually unnecessary to call this method as a data container will automatically be emptied when the object is closed.

(Inherited from DkmDataContainer)
RequestBreakpointEventOnModifiedThread(DkmThread)

The breakpoint condition processor decides not to break on the given thread but another thread of the same warp, so the breakpoint condition processor instructs the base debug monitor to re-send the breakpoint event on the other thread.

(Inherited from DkmRuntimeBreakpoint)
RequestBreakpointEventOnModifiedThread(DkmWorkList, DkmThread, DkmCompletionRoutine<DkmRequestBreakpointEventOnModifiedThreadAsyncResult>)

The breakpoint condition processor decides not to break on the given thread but another thread of the same warp, so the breakpoint condition processor instructs the base debug monitor to re-send the breakpoint event on the other thread.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

(Inherited from DkmRuntimeBreakpoint)
SetCompiledConditionPending()

This method is similar to SetCompiledCondition, but is used in cases where the instruction address is not known up front, such as data breakpoints. In these cases, when the breakpoint is first hit at a particular address, a call will be made to the breakpoint client to obtain a new compiled condition for this address (IDkmBreakpointConditionProcessorClient.GetCompiledCondition). This is used for languages which are evaluated in the IDE process (ex: C++).

(Inherited from DkmRuntimeBreakpoint)
SetCompiledConditionPending(DkmWorkList, DkmCompletionRoutine<DkmSetCompiledConditionPendingAsyncResult>)

This method is similar to SetCompiledCondition, but is used in cases where the instruction address is not known up front, such as data breakpoints. In these cases, when the breakpoint is first hit at a particular address, a call will be made to the breakpoint client to obtain a new compiled condition for this address (IDkmBreakpointConditionProcessorClient.GetCompiledCondition). This is used for languages which are evaluated in the IDE process (ex: C++).

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

(Inherited from DkmRuntimeBreakpoint)
SetDataItem<T>(DkmDataCreationDisposition, T)

Place a new item in the data container.

(Inherited from DkmDataContainer)
SetEvaluationCondition(DkmBreakpointCondition, String)

Sets a breakpoint condition which is evaluated on the target computer. This is used for .NET languages.

(Inherited from DkmRuntimeBreakpoint)
SetEvaluationCondition(DkmWorkList, DkmBreakpointCondition, DkmCompletionRoutine<DkmSetEvaluationConditionAsyncResult>)

Sets a breakpoint condition which is evaluated on the target computer. This is used for .NET languages.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

(Inherited from DkmRuntimeBreakpoint)
SetHitCountCondition(DkmBreakpointHitCountCondition, Int32)

Initialize or update the hit count condition/value on a breakpoint. If the same breakpoint has both a language-level condition, and a hit count condition, the language-level condition is applied first. The condition is implicitly removed if the DkmRuntimeBreakpoint is closed.

(Inherited from DkmRuntimeBreakpoint)
SetHitCountCondition(DkmWorkList, DkmBreakpointHitCountCondition, Int32, DkmCompletionRoutine<DkmSetRuntimeBreakpointHitCountConditionAsyncResult>)

Initialize or update the hit count condition/value on a breakpoint. If the same breakpoint has both a language-level condition, and a hit count condition, the language-level condition is applied first. The condition is implicitly removed if the DkmRuntimeBreakpoint is closed.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

(Inherited from DkmRuntimeBreakpoint)
Test()

Determines if the given DkmRuntimeBreakpoint could be enabled. This is used from within the breakpoints dialog to validate breakpoints before the dialog is closed.

(Inherited from DkmRuntimeBreakpoint)
Test(DkmWorkList, DkmCompletionRoutine<DkmTestRuntimeBreakpointAsyncResult>)

Determines if the given DkmRuntimeBreakpoint could be enabled. This is used from within the breakpoints dialog to validate breakpoints before the dialog is closed.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

(Inherited from DkmRuntimeBreakpoint)

Explicit Interface Implementations

IDisposable.Dispose()

To be added.

(Inherited from DkmRuntimeBreakpoint)

Applies to