VisualGDBExtensibility.LiveWatch Namespace

Contains interfaces and other types used for development of Live Watch plugins.

Remarks

Every live watch plugin must implement the ILiveWatchPlugin interface, that will be used by VisualGDB to create a node source. VisualGDB will then periodically call the PerformPeriodicUpdatesFromBackgroundThread method in the created source to return the list of live variable nodes provided by the plugin.

The plugin's implementation of PerformPeriodicUpdatesFromBackgroundThread would typically return some combination of the following nodes:

The target-derived nodes can be created either from named global variables (e.g. TickCount) or from type+address pairs (e.g. (Thread *)0x1234). See the IPinnedVariable interface for details on various methods of creating pinned variables.

If the live watch plugin needs to parse lists, trees, heaps, etc, it should avoid reading the memory directly from the update function. Instead, it should create live watch objects via CreateLiveVariable(UInt64, Int32, String, LiveVariableFlags), CreateLiveVariable(ILiveWatchEngine, IPinnedVariable, LiveVariableFlags), or CreateLiveVariable(ILiveWatchEngine, String, Boolean, LiveVariableFlags), and then call the GetValue(LiveVariableQueryMode) method to read the actual variable value. This allows VisualGDB to group and order memory reading requests from various variables, and run them with minimal overhead. Reading multiple variable values directly instead of maintaining a list of active live variables could considerably (over 10x) lower the overall performance.

Classes

LiveVariablesUpdatedEventArgs Contains information passed via LiveVariableUpdatingCompleted and UpdateLiveVariableGUI.
LiveWatchEngineExtensions Provides various extension methods for the liev watch interfaces.
LiveWatchFilterRequest Used to pass a search string to MatchesFilter(LiveWatchFilterRequest).
LiveWatchNodeState Contains the mutable live watch node state returned by ILiveWatchNode

Structures

BitfieldMemberInfo Represents a single bit field member extracted from the DWARF symbols.
CommonLiveWatchSettings Contains various settings configured via VisualGDB Project Properties, or Tools->Options->VisualGDB.
LiveVariablesStatistics Holds various statistics about the currently active live variables.
LiveVariableValue Represents the value of a single live variable queried via GetValue(LiveVariableQueryMode) or ReadMemory(UInt64, Int32, LiveVariableQueryMode)
LiveWatchEnumValue Represents a single known enum value returned by enum-based live watch nodes via IScalarLiveWatchNode.EnumValues.
LiveWatchNodeOverrides Allows overriding some properties of a live watch node that is created based on a pinned variable.
LiveWatchNodeSuspendState Contains information about the suspend state of the given live watch node. Used to determine whether the corresponding live variables should be suspended as well.
LiveWatchPhysicalLocation Represents the source and physical location of a live watch node used by various context menu commands.
LiveWatchUpdateContext Passed to UpdateState(LiveWatchUpdateContext) to control which information about the node should get updated.
PinnedVariableExpression Represents the expression directly entered into the Live Watch view.
PinnedVariableTypeName Specifies the type name of the given pinned variable extracted from the DWARF symbols.
RawSymbolInfo Contains information about a given raw ELF symbol returned by TryLookupRawSymbolInfo(String) or FindSymbolsContainingString(String)
ScalarCondition Represents a live watch breakpoint condition selected by the user.
SimpleEnumValue Represents a single known enum value extracted from the DWARF symbols. Typically, returned via EnumValues.

Interfaces

ILiveMemoryManager Allows reading/writing the target memory without stopping it.
ILiveSymbolParser Allows locating the addresses of specific variables and obtaining information about the structure of various types.
ILiveVariable Represents a single low-level live variable (a block of memory that is automatically read by VisualGDB on every update operation).
ILiveWatchEngine Implemented by VisualGDB. Provides methods for reading the symbols of the debugged executable, accessing the target memory, and reporting various errors.
ILiveWatchFormatter Translates the raw value (typically coming from LiveVariableValue) to a user-friendly value or back.
ILiveWatchFormatter2 Extends the ILiveWatchFormatter with a method that allows getting the raw scalar value without any loss of precision.
ILiveWatchNode Represents a single node displayed in the Live Watch window.
ILiveWatchNodeSource Maintains a list of the Live Watch nodes provided by the plugin.
ILiveWatchNodeSource2 Extends ILiveWatchNodeSource, adding a property controlling whether the plugin view is currently active.
ILiveWatchPlugin Implemented by Live Watch plugins in order to display custom Live Watch views.
IPinnedEnumVariable Extends the IPinnedVariable interface, providing information about the enum values.
IPinnedVariable Contains information about a specific variable physically located in memory (e.g. a global variable). It encapsulates the debugging symbols loaded from the ELF file and is not connected to the actual target memory.
IPinnedVariable2 Extends IPinnedVariable with optional information about a bit field member.
IPinnedVariableStructMember Represents a single field of a struct/class obtained from IPinnedVariableStructType
IPinnedVariableStructType Represents a struct/class type extracted from the DWARF symbols. Typically obtained by calling LookupType(String, Boolean)
IPinnedVariableType Contains information about a single DWARF type. Typically obtained by calling LookupType(String, Boolean)
IScalarLiveWatchNode Represents a live watch node that can have a direct value (e.g. int or string).
ISearchableLiveWatchNode Represents a node that can be filtered via the filter box in the Live Watch window.

Enumerations

LiveVariableFlags Specifies flags used when creating live variables.
LiveVariableQueryMode Specifies how the live variable value should be queried.
LiveWatchCapabilities Specifies the capabilities and visual flags of a live watch node.
LiveWatchChildrenRequestReason Specifies the reason for calling GetChildren(LiveWatchChildrenRequestReason)
LiveWatchConfigurationError Represents the known configuration errors detected by live watch plugins.
LiveWatchNodeIcon Represents the commonly used live watch node icons
LiveWatchNodeVisibility Represents the visibility of a Live Watch node in the Live Watch window.
LiveWatchSearchResult Represents the result of applying a filter to a live watch node
LiveWatchUpdateMode Specifies whether to update the information about the node's children.
LiveWatchVariableStateFlags Specifies various flags associated with a live variable node value
PinnedVariableType Specifies the general type (e.g. scalar/pointer) of a given pinned variable.
ScalarComparisonMode Specifies the comparison mode used when setting live watch breakpoints.
ScalarVariableType Represents the built-in types of scalar variables.