GDBServerFoundation::BasicGDBStub Class Referenceabstract

Implements basic GDB stub functionality (recognizing packet types, reporting features, formatting common replies). More...

#include <BasicGDBStub.h>

Inheritance diagram for GDBServerFoundation::BasicGDBStub:
GDBServerFoundation::IGDBStub GDBServerFoundation::IBreakInTarget GDBServerFoundation::GDBStub

Public Member Functions

virtual StubResponse HandleRequest (const BazisLib::TempStringA &requestType, char splitterChar, const BazisLib::TempStringA &requestData)
 Handles a fully unescaped RLE-expanded request from GDB.
 
 BasicGDBStub ()
 
- Public Member Functions inherited from GDBServerFoundation::IGDBStub
virtual ~IGDBStub ()
 
- Public Member Functions inherited from GDBServerFoundation::IBreakInTarget
virtual void OnBreakInRequest ()=0
 

Protected Member Functions

virtual StubResponse Handle_qSupported (const BazisLib::TempStringA &requestData)
 Stores features supported by GDB and reports features supported by the stub.
 
virtual StubResponse Handle_H (const BazisLib::TempStringA &requestType)
 Sets thread ID for subsequent thread-related commands.
 
virtual StubResponse Handle_QueryStopReason ()=0
 
virtual StubResponse Handle_g (int threadID)=0
 Returns the values of all target registers in one block.
 
virtual StubResponse Handle_G (int threadID, const BazisLib::TempStringA &registerValueBlock)=0
 Sets the value of all target registers.
 
virtual StubResponse Handle_P (int threadID, const BazisLib::TempStringA &registerIndex, const BazisLib::TempStringA &registerValue)=0
 Sets the value of exactly one register.
 
virtual StubResponse Handle_m (const BazisLib::TempStringA &addr, const BazisLib::TempStringA &length)=0
 Reads target memory.
 
virtual StubResponse Handle_M (const BazisLib::TempStringA &addr, const BazisLib::TempStringA &length, const BazisLib::TempStringA &data)=0
 Writes target memory.
 
virtual StubResponse Handle_X (const BazisLib::TempStringA &addr, const BazisLib::TempStringA &length, const BazisLib::TempStringA &binaryData)=0
 Writes target memory, data is transmitted in binary format.
 
virtual StubResponse Handle_c (int threadID)=0
 Continue executing selected thread.
 
virtual StubResponse Handle_s (int threadID)=0
 Single-step selected thread.
 
virtual StubResponse Handle_qfThreadInfo ()=0
 Return a list of all thread IDs.
 
virtual StubResponse Handle_qsThreadInfo ()=0
 
virtual StubResponse Handle_qThreadExtraInfo (const BazisLib::TempStringA &strThreadID)=0
 Return user-friendly thread description.
 
virtual StubResponse Handle_T (const BazisLib::TempStringA &strThreadID)=0
 Check whether the specified thread is alive.
 
virtual StubResponse Handle_qC ()=0
 Returns the current thread ID.
 
virtual StubResponse Handle_vCont (const BazisLib::TempStringA &arguments)=0
 Sets step mode for each thread independently and continues execution.
 
virtual StubResponse Handle_k ()=0
 Kills the process.
 
virtual StubResponse Handle_Zz (bool setBreakpoint, char type, const BazisLib::TempStringA &addr, const BazisLib::TempStringA &kind, const BazisLib::TempStringA &conditions)=0
 Sets or removes a breakpoint.
 
virtual StubResponse Handle_qCRC (const BazisLib::TempStringA &addr, const BazisLib::TempStringA &length)=0
 Computes CRC of a given memory block.
 
virtual StubResponse Handle_qRcmd (const BazisLib::TempStringA &command)=0
 Executes an arbitrary target command sent by GDB.
 
virtual StubResponse Handle_vFlashErase (const BazisLib::TempStringA &addr, const BazisLib::TempStringA &length)=0
 
virtual StubResponse Handle_vFlashWrite (const BazisLib::TempStringA &addr, const BazisLib::TempStringA &binaryData)=0
 
virtual StubResponse Handle_vFlashDone ()=0
 
StubResponse StopRecordToStopReply (const TargetStopRecord &rec, const char *pReportedRegisterValues=NULL, bool updateLastReportedThreadID=true)
 
int GetThreadIDForOp (bool isRegOp)
 
void AppendRegisterValueToString (const RegisterValue &val, size_t sizeInBytes, BazisLib::DynamicStringA &str, const char *pSuffix=NULL)
 
StubResponse FormatGDBStatus (GDBStatus status)
 
void RegisterStubFeature (const char *pFeature)
 
virtual void ResetAllCachesWhenResumingTarget ()
 

Protected Attributes

int m_ThreadIDForCont
 
int m_ThreadIDForReg
 
int m_LastReportedCurrentThreadID
 

Detailed Description

Implements basic GDB stub functionality (recognizing packet types, reporting features, formatting common replies).

Constructor & Destructor Documentation

GDBServerFoundation::BasicGDBStub::BasicGDBStub ( )

Member Function Documentation

void GDBServerFoundation::BasicGDBStub::AppendRegisterValueToString ( const RegisterValue val,
size_t  sizeInBytes,
BazisLib::DynamicStringA &  str,
const char *  pSuffix = NULL 
)
protected
GDBServerFoundation::StubResponse GDBServerFoundation::BasicGDBStub::FormatGDBStatus ( GDBStatus  status)
protected
int GDBServerFoundation::BasicGDBStub::GetThreadIDForOp ( bool  isRegOp)
protected
virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_c ( int  threadID)
protectedpure virtual

Continue executing selected thread.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_g ( int  threadID)
protectedpure virtual

Returns the values of all target registers in one block.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_G ( int  threadID,
const BazisLib::TempStringA &  registerValueBlock 
)
protectedpure virtual

Sets the value of all target registers.

Implemented in GDBServerFoundation::GDBStub.

GDBServerFoundation::StubResponse GDBServerFoundation::BasicGDBStub::Handle_H ( const BazisLib::TempStringA &  requestType)
protectedvirtual

Sets thread ID for subsequent thread-related commands.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_k ( )
protectedpure virtual

Kills the process.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_m ( const BazisLib::TempStringA &  addr,
const BazisLib::TempStringA &  length 
)
protectedpure virtual

Reads target memory.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_M ( const BazisLib::TempStringA &  addr,
const BazisLib::TempStringA &  length,
const BazisLib::TempStringA &  data 
)
protectedpure virtual

Writes target memory.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_P ( int  threadID,
const BazisLib::TempStringA &  registerIndex,
const BazisLib::TempStringA &  registerValue 
)
protectedpure virtual

Sets the value of exactly one register.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_qC ( )
protectedpure virtual

Returns the current thread ID.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_qCRC ( const BazisLib::TempStringA &  addr,
const BazisLib::TempStringA &  length 
)
protectedpure virtual

Computes CRC of a given memory block.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_qfThreadInfo ( )
protectedpure virtual

Return a list of all thread IDs.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_qRcmd ( const BazisLib::TempStringA &  command)
protectedpure virtual

Executes an arbitrary target command sent by GDB.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_qsThreadInfo ( )
protectedpure virtual
StubResponse BasicGDBStub::Handle_qSupported ( const BazisLib::TempStringA &  requestData)
protectedvirtual

Stores features supported by GDB and reports features supported by the stub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_qThreadExtraInfo ( const BazisLib::TempStringA &  strThreadID)
protectedpure virtual

Return user-friendly thread description.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_QueryStopReason ( )
protectedpure virtual
virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_s ( int  threadID)
protectedpure virtual

Single-step selected thread.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_T ( const BazisLib::TempStringA &  strThreadID)
protectedpure virtual

Check whether the specified thread is alive.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_vCont ( const BazisLib::TempStringA &  arguments)
protectedpure virtual

Sets step mode for each thread independently and continues execution.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_vFlashDone ( )
protectedpure virtual
virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_vFlashErase ( const BazisLib::TempStringA &  addr,
const BazisLib::TempStringA &  length 
)
protectedpure virtual
virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_vFlashWrite ( const BazisLib::TempStringA &  addr,
const BazisLib::TempStringA &  binaryData 
)
protectedpure virtual
virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_X ( const BazisLib::TempStringA &  addr,
const BazisLib::TempStringA &  length,
const BazisLib::TempStringA &  binaryData 
)
protectedpure virtual

Writes target memory, data is transmitted in binary format.

Implemented in GDBServerFoundation::GDBStub.

virtual StubResponse GDBServerFoundation::BasicGDBStub::Handle_Zz ( bool  setBreakpoint,
char  type,
const BazisLib::TempStringA &  addr,
const BazisLib::TempStringA &  kind,
const BazisLib::TempStringA &  conditions 
)
protectedpure virtual

Sets or removes a breakpoint.

Implemented in GDBServerFoundation::GDBStub.

StubResponse BasicGDBStub::HandleRequest ( const BazisLib::TempStringA &  requestType,
char  splitterChar,
const BazisLib::TempStringA &  requestData 
)
virtual

Handles a fully unescaped RLE-expanded request from GDB.

Implements GDBServerFoundation::IGDBStub.

Reimplemented in GDBServerFoundation::GDBStub.

void GDBServerFoundation::BasicGDBStub::RegisterStubFeature ( const char *  pFeature)
inlineprotected
void GDBServerFoundation::BasicGDBStub::ResetAllCachesWhenResumingTarget ( )
protectedvirtual

Reimplemented in GDBServerFoundation::GDBStub.

GDBServerFoundation::StubResponse GDBServerFoundation::BasicGDBStub::StopRecordToStopReply ( const TargetStopRecord rec,
const char *  pReportedRegisterValues = NULL,
bool  updateLastReportedThreadID = true 
)
protected

Member Data Documentation

int GDBServerFoundation::BasicGDBStub::m_LastReportedCurrentThreadID
protected
int GDBServerFoundation::BasicGDBStub::m_ThreadIDForCont
protected
int GDBServerFoundation::BasicGDBStub::m_ThreadIDForReg
protected

The documentation for this class was generated from the following files: