Debugging Tools for Windows

Client Objects and the Engine

An EngExtCpp extension interacts with the debugger engine through a client object. Interface pointers to the client object are available to the extension through members of the ExtExtension base class. The following members provide access to the first version of the engine API interfaces.

Engine API interface ExtExtension member
IDebugAdvanced m_Advanced
IDebugClient m_Client
IDebugControl m_Control
IDebugDataSpaces m_Data
IDebugRegisters m_Registers
IDebugSymbols m_Symbols
IDebugSystemObjects m_System

The following members provide access to later versions of the engine API interfaces. These interfaces may not be available in all versions of the debugger engine. If they are not available, any attempt to use them will result in a exception being thrown.

Engine API interface ExtExtension member
IDebugAdvanced2 m_Advanced2
IDebugAdvanced3 m_Advanced3
IDebugClient2 m_Client2
IDebugClient3 m_Client3
IDebugClient4 m_Client4
IDebugClient5 m_Client5
IDebugControl2 m_Control2
IDebugControl3 m_Control3
IDebugControl4 m_Control4
IDebugData2 m_Data2
IDebugData3 m_Data3
IDebugData4 m_Data4
IDebugRegisters2 m_Registers2
IDebugSymbols2 m_Symbols2
IDebugSymbols3 m_Symbols3
IDebugSystemObjects2 m_System2
IDebugSystemObjects3 m_System3
IDebugSystemObjects4 m_System4

The members in these tables are initialized each time the extension library is used to execute an extension command or format a structure for output. Once a task is completed, these members are uninitialized. Consequently, extensions should not cache the values of these members and should use the ExtExtension members directly.

An extension library can also create its own client objects using the method IDebugClient::CreateClient or the functions DebugCreate or DebugConnect.

For an overview of client objects, see Client Objects.

Build machine: CAPEBUILD