winIDEA SDK
IConnectDebug Struct Reference

Description

The IConnectDebug interface provides access to debug functions exported by winIDEA.


#include <i_Connect.h>

Inheritance diagram for IConnectDebug:
IConnectDebug2

Classes

struct  SInfo
 Contains CPU info. More...
 
struct  SStatus
 Contains CPU status. More...
 

Public Types

enum  EAccessFlags {
  fMonitor = isys::IConnectDebug::EAccessFlags::fMonitor , fRealTime = isys::IConnectDebug::EAccessFlags::fRealTime ,
  fMemMask = isys::IConnectDebug::EAccessFlags::fMemMask , fCore = isys::IConnectDebug::EAccessFlags::fCore ,
  fSFR = isys::IConnectDebug::EAccessFlags::fSFR , fSoC = isys::IConnectDebug::EAccessFlags::fSoC ,
  fModule = isys::IConnectDebug::EAccessFlags::fModule , fRegMask = isys::IConnectDebug::EAccessFlags::fRegMask ,
  fCacheNever = isys::IConnectDebug::EAccessFlags::fCacheNever , fCacheDefault = isys::IConnectDebug::EAccessFlags::fCacheDefault ,
  fCacheStop = isys::IConnectDebug::EAccessFlags::fCacheStop , fCacheCode = isys::IConnectDebug::EAccessFlags::fCacheCode ,
  fCacheMask = isys::IConnectDebug::EAccessFlags::fCacheMask , fNoRefresh = isys::IConnectDebug::EAccessFlags::fNoRefresh ,
  fDirect = isys::IConnectDebug::EAccessFlags::fDirect , fAccessFlagsMask = isys::IConnectDebug::EAccessFlags::fAccessFlagsMask
}
 
enum  EBreakpointFlags {
  bAddress = isys::IConnectDebug::EBreakpointFlags::bAddress , bSymbol = isys::IConnectDebug::EBreakpointFlags::bSymbol ,
  bSource = isys::IConnectDebug::EBreakpointFlags::bSource , bAddrMask = isys::IConnectDebug::EBreakpointFlags::bAddrMask ,
  bHW = isys::IConnectDebug::EBreakpointFlags::bHW , bSet = isys::IConnectDebug::EBreakpointFlags::bSet ,
  bClear = isys::IConnectDebug::EBreakpointFlags::bClear , bEnable = isys::IConnectDebug::EBreakpointFlags::bEnable ,
  bDisable = isys::IConnectDebug::EBreakpointFlags::bDisable , bAll = isys::IConnectDebug::EBreakpointFlags::bAll ,
  bReapply = isys::IConnectDebug::EBreakpointFlags::bReapply , bSetMask = isys::IConnectDebug::EBreakpointFlags::bSetMask ,
  bHW_accAny = isys::IConnectDebug::EBreakpointFlags::bHW_accAny , bHW_accRD = isys::IConnectDebug::EBreakpointFlags::bHW_accRD ,
  bHW_accWR = isys::IConnectDebug::EBreakpointFlags::bHW_accWR , bHW_accRW = isys::IConnectDebug::EBreakpointFlags::bHW_accRW ,
  bHW_accFetch = isys::IConnectDebug::EBreakpointFlags::bHW_accFetch , bHW_accMask = isys::IConnectDebug::EBreakpointFlags::bHW_accMask ,
  bHW_EntireObject = isys::IConnectDebug::EBreakpointFlags::bHW_EntireObject , bHW_SizeDefault = isys::IConnectDebug::EBreakpointFlags::bHW_SizeDefault ,
  bHW_Size1 = isys::IConnectDebug::EBreakpointFlags::bHW_Size1 , bHW_Size2 = isys::IConnectDebug::EBreakpointFlags::bHW_Size2 ,
  bHW_Size4 = isys::IConnectDebug::EBreakpointFlags::bHW_Size4 , bHW_Size8 = isys::IConnectDebug::EBreakpointFlags::bHW_Size8 ,
  bHW_SizeMask = isys::IConnectDebug::EBreakpointFlags::bHW_SizeMask , bHW_DataMask = isys::IConnectDebug::EBreakpointFlags::bHW_DataMask ,
  bHW_DataLSB0 = isys::IConnectDebug::EBreakpointFlags::bHW_DataLSB0 , bHW_DataLSB1 = isys::IConnectDebug::EBreakpointFlags::bHW_DataLSB1 ,
  bHW_DataLSB2 = isys::IConnectDebug::EBreakpointFlags::bHW_DataLSB2 , bHW_DataLSB3 = isys::IConnectDebug::EBreakpointFlags::bHW_DataLSB3 ,
  bHW_DataLSB4 = isys::IConnectDebug::EBreakpointFlags::bHW_DataLSB4 , bHW_DataLSB5 = isys::IConnectDebug::EBreakpointFlags::bHW_DataLSB5 ,
  bHW_DataLSB6 = isys::IConnectDebug::EBreakpointFlags::bHW_DataLSB6 , bHW_DataLSB7 = isys::IConnectDebug::EBreakpointFlags::bHW_DataLSB7
}
 Obtains status of the CPU. More...
 
enum  EEvaluate {
  efDefaultMemAreaDisplay = isys::IConnectDebug::EEvaluate::efDefaultMemAreaDisplay , efNoMemAreaDisplay = isys::IConnectDebug::EEvaluate::efNoMemAreaDisplay ,
  efVagueFloatEqual = isys::IConnectDebug::EEvaluate::efVagueFloatEqual , efIgnorePointerAssignType = isys::IConnectDebug::EEvaluate::efIgnorePointerAssignType ,
  efType2 = isys::IConnectDebug::EEvaluate::efType2 , efAllowTernaryOperator = isys::IConnectDebug::EEvaluate::efAllowTernaryOperator
}
 
enum  EGetAddressFlags {
  gafExpression = isys::IConnectDebug::EGetAddressFlags::gafExpression , gafVariables = isys::IConnectDebug::EGetAddressFlags::gafVariables ,
  gafLabels = isys::IConnectDebug::EGetAddressFlags::gafLabels , gafFunctions = isys::IConnectDebug::EGetAddressFlags::gafFunctions ,
  gafEnumMask = isys::IConnectDebug::EGetAddressFlags::gafEnumMask , gafEnumIndexMask = isys::IConnectDebug::EGetAddressFlags::gafEnumIndexMask ,
  gafEnumIndexOfs = isys::IConnectDebug::EGetAddressFlags::gafEnumIndexOfs , gafType2 = isys::IConnectDebug::EGetAddressFlags::gafType2 ,
  gafUseFile = isys::IConnectDebug::EGetAddressFlags::gafUseFile , gafFileMask = isys::IConnectDebug::EGetAddressFlags::gafFileMask ,
  gafFileOfs = isys::IConnectDebug::EGetAddressFlags::gafFileOfs
}
 
enum  EMemoryAccessFlags
 Used in combination with EAccessFlags. More...
 
enum  EModify { mfModifyToResult = 0x01000000 , mfModifyNoReadBack = 0x02000000 }
 Defines modifications. More...
 
enum  ERunControlFlags {
  rNothing = isys::IConnectDebug::ERunControlFlags::rNothing , rReset = isys::IConnectDebug::ERunControlFlags::rReset ,
  rResetAndRun = isys::IConnectDebug::ERunControlFlags::rResetAndRun , rDownload = isys::IConnectDebug::ERunControlFlags::rDownload ,
  rStop = isys::IConnectDebug::ERunControlFlags::rStop , rRun = isys::IConnectDebug::ERunControlFlags::rRun ,
  rStep = isys::IConnectDebug::ERunControlFlags::rStep , rStepOver = isys::IConnectDebug::ERunControlFlags::rStepOver ,
  rStepInst = isys::IConnectDebug::ERunControlFlags::rStepInst , rStepOverInst = isys::IConnectDebug::ERunControlFlags::rStepOverInst ,
  rStepHigh = isys::IConnectDebug::ERunControlFlags::rStepHigh , rStepOverHigh = isys::IConnectDebug::ERunControlFlags::rStepOverHigh ,
  rRunUntil = isys::IConnectDebug::ERunControlFlags::rRunUntil , rRunUntilReturn = isys::IConnectDebug::ERunControlFlags::rRunUntilReturn ,
  rGoto = isys::IConnectDebug::ERunControlFlags::rGoto , rSnapshot = isys::IConnectDebug::ERunControlFlags::rSnapshot ,
  rVerify = isys::IConnectDebug::ERunControlFlags::rVerify , rDownloadNoCode = isys::IConnectDebug::ERunControlFlags::rDownloadNoCode ,
  rAttach = isys::IConnectDebug::ERunControlFlags::rAttach , rDetach = isys::IConnectDebug::ERunControlFlags::rDetach ,
  rSlowRunOff = isys::IConnectDebug::ERunControlFlags::rSlowRunOff , rSlowRunOn = isys::IConnectDebug::ERunControlFlags::rSlowRunOn ,
  rRunMask = isys::IConnectDebug::ERunControlFlags::rRunMask , rWaitForStop = isys::IConnectDebug::ERunControlFlags::rWaitForStop ,
  rWaitTimeout10s = isys::IConnectDebug::ERunControlFlags::rWaitTimeout10s , rWaitTimeout1s = isys::IConnectDebug::ERunControlFlags::rWaitTimeout1s ,
  rWaitTimeout3s = isys::IConnectDebug::ERunControlFlags::rWaitTimeout3s , rWaitTimeout100s = isys::IConnectDebug::ERunControlFlags::rWaitTimeout100s ,
  rWaitTimeoutInf = isys::IConnectDebug::ERunControlFlags::rWaitTimeoutInf , rWaitTimeoutMask = isys::IConnectDebug::ERunControlFlags::rWaitTimeoutMask ,
  rPollingOff = isys::IConnectDebug::ERunControlFlags::rPollingOff , rPollingOn = isys::IConnectDebug::ERunControlFlags::rPollingOn ,
  rPollingMask = isys::IConnectDebug::ERunControlFlags::rPollingMask , rTristateOff = isys::IConnectDebug::ERunControlFlags::rTristateOff ,
  rTristateOn = isys::IConnectDebug::ERunControlFlags::rTristateOn , rTristateMask = isys::IConnectDebug::ERunControlFlags::rTristateMask ,
  rTargetHWConnectOff = isys::IConnectDebug::ERunControlFlags::rTargetHWConnectOff , rTargetHWConnectOn = isys::IConnectDebug::ERunControlFlags::rTargetHWConnectOn ,
  rTargetHWConnectMask = isys::IConnectDebug::ERunControlFlags::rTargetHWConnectMask
}
 
enum  ESourceFlags {
  sExact = 0x00000001 , sAbsolutePath = 0x00000002 ,
  sReportSize = 0x00000004
}
 Defines source flags. More...
 
enum  EStatusFlags {
  tCPU = 0x00000000 , tMask = 0x0000000F ,
  rCurrent = 0x00000000 , rRefresh = 0x00000010 ,
  rMask = 0x000000F0 , sWantStopReason = 0x00000100
}
 Defines status flags. More...
 
enum  ESymbolFlags {
  sVariables = isys::IConnectDebug::ESymbolFlags::sVariables , sLabels = isys::IConnectDebug::ESymbolFlags::sLabels ,
  sFunctions = isys::IConnectDebug::ESymbolFlags::sFunctions , sLines = isys::IConnectDebug::ESymbolFlags::sLines ,
  sConstants = isys::IConnectDebug::ESymbolFlags::sConstants , sSourceCode = isys::IConnectDebug::ESymbolFlags::sSourceCode ,
  sScopeExact = isys::IConnectDebug::ESymbolFlags::sScopeExact , sScopeNarrow = isys::IConnectDebug::ESymbolFlags::sScopeNarrow ,
  sScopeWide = isys::IConnectDebug::ESymbolFlags::sScopeWide , sScopeMask = isys::IConnectDebug::ESymbolFlags::sScopeMask
}
 

Public Member Functions

virtual HRESULT Evaluate (DWORD dwAccessFlags, LPCSTR pszExpression, LPSTR pszResult, DWORD dwResultLen, SValue *pValue, SType *pType) PURE
 Evaluates an expression. More...
 
virtual HRESULT GetAddress (DWORD dwGetAddressFlags, LPCSTR pszExpression, BYTE *pbyMemArea, ADDRESS *paAddress, ADDRESS *paSizeMAUs, SType *pType) PURE
 Returns address and size of an object, like a global symbol, function, etc. More...
 
virtual HRESULT GetAddressSource (DWORD dwSourceFlags, ADDRESS aAddress, LPSTR pszFileName, DWORD dwFileNameLen, DWORD *pdwLine) PURE
 Returns the source (line number and file name) matching to an address. More...
 
virtual HRESULT GetSourceAddress (DWORD dwSourceFlags, LPCSTR pszFileName, DWORD dwLine, ADDRESS *paAddress, DWORD *pdwNumAddresses) PURE
 Returns the address(es) of a source line. More...
 
virtual HRESULT GetSymbol (DWORD dwSymbolFlags, BYTE byMemArea, ADDRESS aAddress, LPSTR pszName, DWORD dwNameLen) PURE
 Returns the name of the symbol on the specified address. More...
 
virtual HRESULT Modify (DWORD dwModifyFlags, LPCSTR pszExpression, LPSTR pszResult, DWORD dwResultLen, const SValue *pValue, const SType *pType) PURE
 Modifies pszExpression to pValue or pszResult, if mfModifyToResult is set. More...
 
virtual HRESULT ReadMemory (DWORD dwAccessFlags, BYTE byMemArea, ADDRESS aAddress, ADDRESS aNumMAUs, BYTE *pbyBuf, BYTE byBytesPerMAU, BYTE *pbyAccessInfo) PURE
 Reads memory from the target system. More...
 
virtual HRESULT ReadRegister (DWORD dwAccessFlags, LPCSTR pszRegisterName, SValue *pValue, SType *pType) PURE
 Reads the specified register. More...
 
virtual HRESULT ReadValue (DWORD dwAccessFlags, BYTE byMemArea, ADDRESS aAddress, SValue *pValue, const SType *pType) PURE
 Reads a value from the target system. More...
 
virtual HRESULT RunControl (DWORD dwRunControlFlags, BYTE byMemArea, ADDRESS aAddress) PURE
 Performs a run control operation. More...
 
virtual HRESULT SetBreakpoint (DWORD dwBreakpointFlags, BYTE byMemArea, ADDRESS aAddress, LPCSTR pszAddress, DWORD dwLine) PURE
 Controls breakpoint setting. More...
 
virtual HRESULT WriteMemory (DWORD dwAccessFlags, BYTE byMemArea, ADDRESS aAddress, ADDRESS aNumMAUs, const BYTE *pbyBuf, BYTE byBytesPerMAU, BYTE *pbyAccessInfo) PURE
 Writes memory to the target system. More...
 
virtual HRESULT WriteRegister (DWORD dwAccessFlags, LPCSTR pszRegisterName, const SValue *pValue, const SType *pType) PURE
 Writes the specified register. More...
 
virtual HRESULT WriteValue (DWORD dwAccessFlags, BYTE byMemArea, ADDRESS aAddress, const SValue *pValue, const SType *pType) PURE
 Writes a value to the target system. More...
 

Member Enumeration Documentation

◆ EAccessFlags

◆ EBreakpointFlags

Obtains status of the CPU.

Deprecated:
For C++ use flags from isys::IConnectDebug::EBreakpointFlags (i_ConnectTypes.h), for other languages the right type is automatically used. Provided for backwards compatibility.
Enumerator
bAddress 

See isys::IConnectDebug::EBreakpointFlags.

bSymbol 

See isys::IConnectDebug::EBreakpointFlags.

bSource 

See isys::IConnectDebug::EBreakpointFlags.

bAddrMask 

See isys::IConnectDebug::EBreakpointFlags.

bHW 

See isys::IConnectDebug::EBreakpointFlags.

bSet 

See isys::IConnectDebug::EBreakpointFlags.

bClear 

See isys::IConnectDebug::EBreakpointFlags.

bEnable 

See isys::IConnectDebug::EBreakpointFlags.

bDisable 

See isys::IConnectDebug::EBreakpointFlags.

bAll 

See isys::IConnectDebug::EBreakpointFlags.

bReapply 

See isys::IConnectDebug::EBreakpointFlags.

bSetMask 

See isys::IConnectDebug::EBreakpointFlags.

bHW_accAny 

See isys::IConnectDebug::EBreakpointFlags.

bHW_accRD 

See isys::IConnectDebug::EBreakpointFlags.

bHW_accWR 

See isys::IConnectDebug::EBreakpointFlags.

bHW_accRW 

See isys::IConnectDebug::EBreakpointFlags.

bHW_accFetch 

See isys::IConnectDebug::EBreakpointFlags.

bHW_accMask 

See isys::IConnectDebug::EBreakpointFlags.

bHW_EntireObject 

See isys::IConnectDebug::EBreakpointFlags.

bHW_SizeDefault 

See isys::IConnectDebug::EBreakpointFlags.

bHW_Size1 

See isys::IConnectDebug::EBreakpointFlags.

bHW_Size2 

See isys::IConnectDebug::EBreakpointFlags.

bHW_Size4 

See isys::IConnectDebug::EBreakpointFlags.

bHW_Size8 

See isys::IConnectDebug::EBreakpointFlags.

bHW_SizeMask 

See isys::IConnectDebug::EBreakpointFlags.

bHW_DataMask 

See isys::IConnectDebug::EBreakpointFlags.

bHW_DataLSB0 

See isys::IConnectDebug::EBreakpointFlags.

bHW_DataLSB1 

See isys::IConnectDebug::EBreakpointFlags.

bHW_DataLSB2 

See isys::IConnectDebug::EBreakpointFlags.

bHW_DataLSB3 

See isys::IConnectDebug::EBreakpointFlags.

bHW_DataLSB4 

See isys::IConnectDebug::EBreakpointFlags.

bHW_DataLSB5 

See isys::IConnectDebug::EBreakpointFlags.

bHW_DataLSB6 

See isys::IConnectDebug::EBreakpointFlags.

bHW_DataLSB7 

See isys::IConnectDebug::EBreakpointFlags.

◆ EEvaluate

Deprecated:
For C++ use flags from isys::IConnectDebug::EEvaluate (i_ConnectTypes.h), for other languages the right type is automatically used. Provided for backwards compatibility.
Enumerator
efDefaultMemAreaDisplay 

See isys::IConnectDebug::EEvaluate.

efNoMemAreaDisplay 

See isys::IConnectDebug::EEvaluate.

efVagueFloatEqual 

See isys::IConnectDebug::EEvaluate.

efIgnorePointerAssignType 

See isys::IConnectDebug::EEvaluate.

efType2 

See isys::IConnectDebug::EEvaluate.

efAllowTernaryOperator 

See isys::IConnectDebug::EEvaluate.

◆ EGetAddressFlags

Deprecated:
For C++ use flags from isys::IConnectDebug::EGetAddressFlags (i_ConnectTypes.h), for other languages the right type is automatically used. Provided for backwards compatibility.
Enumerator
gafExpression 

See isys::IConnectDebug::EGetAddressFlags.

gafVariables 

See isys::IConnectDebug::EGetAddressFlags.

gafLabels 

See isys::IConnectDebug::EGetAddressFlags.

gafFunctions 

See isys::IConnectDebug::EGetAddressFlags.

gafEnumMask 

See isys::IConnectDebug::EGetAddressFlags.

gafEnumIndexMask 

See isys::IConnectDebug::EGetAddressFlags.

gafEnumIndexOfs 

See isys::IConnectDebug::EGetAddressFlags.

gafType2 

See isys::IConnectDebug::EGetAddressFlags.

gafUseFile 

See isys::IConnectDebug::EGetAddressFlags.

gafFileMask 

See isys::IConnectDebug::EGetAddressFlags.

gafFileOfs 

See isys::IConnectDebug::EGetAddressFlags.

◆ EMemoryAccessFlags

Used in combination with EAccessFlags.

With Memory Read/Write functions

◆ EModify

Defines modifications.

Enumerator
mfModifyToResult 

if set, pValue and pType are ignored, pszResult must specify the new value

mfModifyNoReadBack 

if set, read-back of the new value is not performed

◆ ERunControlFlags

Deprecated:
For C++ use flags from isys::IConnectDebug::ERunControlFlags (i_ConnectTypes.h), for other languages the right type is automatically used. Provided for backwards compatibility.
Enumerator
rNothing 

See isys::IConnectDebug::ERunControlFlags.

rReset 

See isys::IConnectDebug::ERunControlFlags.

rResetAndRun 

See isys::IConnectDebug::ERunControlFlags.

rDownload 

See isys::IConnectDebug::ERunControlFlags.

rStop 

See isys::IConnectDebug::ERunControlFlags.

rRun 

See isys::IConnectDebug::ERunControlFlags.

rStep 

See isys::IConnectDebug::ERunControlFlags.

rStepOver 

See isys::IConnectDebug::ERunControlFlags.

rStepInst 

See isys::IConnectDebug::ERunControlFlags.

rStepOverInst 

See isys::IConnectDebug::ERunControlFlags.

rStepHigh 

See isys::IConnectDebug::ERunControlFlags.

rStepOverHigh 

See isys::IConnectDebug::ERunControlFlags.

rRunUntil 

See isys::IConnectDebug::ERunControlFlags.

rRunUntilReturn 

See isys::IConnectDebug::ERunControlFlags.

rGoto 

See isys::IConnectDebug::ERunControlFlags.

rSnapshot 

See isys::IConnectDebug::ERunControlFlags.

rVerify 

See isys::IConnectDebug::ERunControlFlags.

rDownloadNoCode 

See isys::IConnectDebug::ERunControlFlags.

rAttach 

See isys::IConnectDebug::ERunControlFlags.

rDetach 

See isys::IConnectDebug::ERunControlFlags.

rSlowRunOff 

See isys::IConnectDebug::ERunControlFlags.

rSlowRunOn 

See isys::IConnectDebug::ERunControlFlags.

rRunMask 

See isys::IConnectDebug::ERunControlFlags.

rWaitForStop 

See isys::IConnectDebug::ERunControlFlags.

rWaitTimeout10s 

See isys::IConnectDebug::ERunControlFlags.

rWaitTimeout1s 

See isys::IConnectDebug::ERunControlFlags.

rWaitTimeout3s 

See isys::IConnectDebug::ERunControlFlags.

rWaitTimeout100s 

See isys::IConnectDebug::ERunControlFlags.

rWaitTimeoutInf 

See isys::IConnectDebug::ERunControlFlags.

rWaitTimeoutMask 

See isys::IConnectDebug::ERunControlFlags.

rPollingOff 

See isys::IConnectDebug::ERunControlFlags.

rPollingOn 

See isys::IConnectDebug::ERunControlFlags.

rPollingMask 

See isys::IConnectDebug::ERunControlFlags.

rTristateOff 

See isys::IConnectDebug::ERunControlFlags.

rTristateOn 

See isys::IConnectDebug::ERunControlFlags.

rTristateMask 

See isys::IConnectDebug::ERunControlFlags.

rTargetHWConnectOff 

See isys::IConnectDebug::ERunControlFlags.

rTargetHWConnectOn 

See isys::IConnectDebug::ERunControlFlags.

rTargetHWConnectMask 

See isys::IConnectDebug::ERunControlFlags.

◆ ESourceFlags

Defines source flags.

Enumerator
sExact 

match address or line position exactly

sAbsolutePath 

pszFileName in absolute path

sReportSize 

for GetSourceAddress function. If specified address and size are reported for every location

◆ EStatusFlags

Defines status flags.

Enumerator
tCPU 

Status of the CPU.

tMask 

mask for tXXX values

rCurrent 

last status obtained by winIDEA

rRefresh 

status refresh is forced

rMask 

mask for rXXX values

sWantStopReason 

report stop reason in m_byStatus

◆ ESymbolFlags

Deprecated:
For C++ use flags from isys::IConnectDebug::ESymbolFlags (i_ConnectTypes.h), for other languages the right type is automatically used. Provided for backwards compatibility.
Enumerator
sVariables 

See isys::IConnectDebug::ESymbolFlags.

sLabels 

See isys::IConnectDebug::ESymbolFlags.

sFunctions 

See isys::IConnectDebug::ESymbolFlags.

sLines 

See isys::IConnectDebug::ESymbolFlags.

sConstants 

See isys::IConnectDebug::ESymbolFlags.

sSourceCode 

See isys::IConnectDebug::ESymbolFlags.

sScopeExact 

See isys::IConnectDebug::ESymbolFlags.

sScopeNarrow 

See isys::IConnectDebug::ESymbolFlags.

sScopeWide 

See isys::IConnectDebug::ESymbolFlags.

sScopeMask 

See isys::IConnectDebug::ESymbolFlags.

Member Function Documentation

◆ Evaluate()

virtual HRESULT IConnectDebug::Evaluate ( DWORD  dwAccessFlags,
LPCSTR  pszExpression,
LPSTR  pszResult,
DWORD  dwResultLen,
SValue pValue,
SType pType 
)
virtual

Evaluates an expression.

Result is placed in pszResult and/or pValue/pType

Returns
  • ICONNECT_E_CAN_NOT_ACCESS - Evaluation of the expression required memory access which could not be performed.
  • ICONNECT_E_BAD_ID - Expression could not be evaluated
Parameters
dwAccessFlagsUse IConnectDebug::EAccessFlags and IConnectDebug::EEvaluate flags. IConnectDebug::EAccessFlags determine what kind of memory access is permitted if required to resolve the expression, while IConnectDebug::EEvaluate flags define result format.
pszExpressionAny C syntax expression.
pszResultPointer to a char buffer that will receive the result of the evaluation. If this parameter is NULL no string value is returned.
dwResultLenLength of the pszResult buffer.
pValuePointer to a SValue type variable that will receive the value. If this parameter is NULL no simple type value is returned. If this parameter is non NULL and the pszExpression doesn't evaluate to a simple type, the function will fail. See IConnectDebug::SValue
pTypePointer to a variable that will receive the type.

◆ GetAddress()

virtual HRESULT IConnectDebug::GetAddress ( DWORD  dwGetAddressFlags,
LPCSTR  pszExpression,
BYTE *  pbyMemArea,
ADDRESS *  paAddress,
ADDRESS *  paSizeMAUs,
SType pType 
)
virtual

Returns address and size of an object, like a global symbol, function, etc.

Returns
  • ICONNECT_E_CAN_NOT_ACCESS - Evaluation required a memory access which could not be performed.
  • ICONNECT_E_BAD_ID - Expression could not be evaluated
  • S_FALSE - File or enum index out of range
Parameters
dwGetAddressFlags
31 30-24 23-16 15-12 11-8 7-0
Use File File Index Enum Index Enum Source Reserved SBZ EAccessFlags
  • EAccessFlags used if required to resolve the expression. See IConnectDebug::EAccessFlags.
  • Enum Source - see IConnectDebug::EGetAddressFlags, gafXXX flags
  • Enum Index - Index of the enumerated symbol to return.
  • File index - Index of the symbol (download) file to use. Used only if Use File flag is set.
pszExpressionAn expression that describes a location in memory (an L-value). If symbol enumeration is used, the name of the global symbol.
pbyMemAreaPointer to a BYTE type variable that will receive the memory area of the object.
paAddressPointer to an ADDRESS type variable that will receive the address of the object.
paSizeMAUsPointer to an ADDRESS type variable that will receive the size of the object.
pTypePointer to a SType type variable that will receive the type of the object.

◆ GetAddressSource()

virtual HRESULT IConnectDebug::GetAddressSource ( DWORD  dwSourceFlags,
ADDRESS  aAddress,
LPSTR  pszFileName,
DWORD  dwFileNameLen,
DWORD *  pdwLine 
)
virtual

Returns the source (line number and file name) matching to an address.

Returns
S_FALSE - Source line not found for the specified address
Parameters
dwSourceFlagsSee IConnectDebug::ESourceFlags.
aAddressAddress.
pszFileNamePointer to char array buffer that will receive the file name.
dwFileNameLenLength of the array pointed to by pszFileName.
pdwLinePointer to DWORD type variable that will receive the line number.

◆ GetSourceAddress()

virtual HRESULT IConnectDebug::GetSourceAddress ( DWORD  dwSourceFlags,
LPCSTR  pszFileName,
DWORD  dwLine,
ADDRESS *  paAddress,
DWORD *  pdwNumAddresses 
)
virtual

Returns the address(es) of a source line.

Returns
S_FALSE - Address for the given source line not found.
Parameters
dwSourceFlagsIConnectDebug::ESourceFlags.
pszFileNameName of the file.
dwLineLine number.
paAddressPointer to an array of ADDRESS type variables that will receive the addresses to which the source line translates.
pdwNumAddressesPoints to a DWORD type variable that:
  • on input specifies the size of the paAddresses array,
  • on output, the number of entries placed into the paAddresses array.

◆ GetSymbol()

virtual HRESULT IConnectDebug::GetSymbol ( DWORD  dwSymbolFlags,
BYTE  byMemArea,
ADDRESS  aAddress,
LPSTR  pszName,
DWORD  dwNameLen 
)
virtual

Returns the name of the symbol on the specified address.

Returns
S_FALSE - No symbol on the specified address. pszName is set to empty string.
Parameters
dwSymbolFlagsSpecifies symbol classes to consider. See IConnectDebug::ESymbolFlags
byMemAreaMemory area of the object.
aAddressAddress of the object.
pszNamePointer to a char buffer that will receive the name of the symbol.
dwNameLenLength of the pszName buffer.

◆ Modify()

virtual HRESULT IConnectDebug::Modify ( DWORD  dwModifyFlags,
LPCSTR  pszExpression,
LPSTR  pszResult,
DWORD  dwResultLen,
const SValue pValue,
const SType pType 
)
virtual

Modifies pszExpression to pValue or pszResult, if mfModifyToResult is set.

Result is returned in pszResult unless NULL or 0 == dwResultLen. The expression must evaluate to a lvalue.

Example 1:

To set the value of iCounter to 42, we can use pValue parameter:

SValue valueData;
SType valueType;
valueData.m_INT16 = 42;
valueType.m_byType = SType::tSigned;
valueType.m_byBitSize = 16;

Modify(IConnectDebug::fMonitor, "iCounter", NULL, 0, &valueData, &valueType);

Example 2:

To modify counters[3] according to the following statement:

  counters[3] = counters[0] + counters[1];

we can set the following:

  pszExpression = "counters[3]";
  pszResult = "counters[0] + counters[1]";
Returns
  • ICONNECT_E_CAN_NOT_ACCESS - Evaluation of the expression required memory access which could not be performed.
  • ICONNECT_E_BAD_ID - Expression could not be evaluated
Parameters
dwModifyFlagsSame as Evaluate with addition of mfModifyToResult. If set, pValue and pType are ignored, pszResult must specify the new value
pszExpressionAny C syntax expression that evaluates to a lvalue.
pszResultPointer to a char buffer that will receive the result of the evaluation. If this parameter is NULL no string value is returned. In case of an error, the pszResult will contain the error string.
dwResultLenMaximum length of the pszResult buffer returned. This value can be zero, even when pszResult is non-NULL (used with the mfModifyToResult flag)
pValuePointer to a SValue type variable containing the value to write to pszExpression. This parameter is not used if mfModifyToResult flag is used.
pTypePointer to a SType type variable containing the type info of pValue. This parameter is not used if mfModifyToResult flag is used.

◆ ReadMemory()

virtual HRESULT IConnectDebug::ReadMemory ( DWORD  dwAccessFlags,
BYTE  byMemArea,
ADDRESS  aAddress,
ADDRESS  aNumMAUs,
BYTE *  pbyBuf,
BYTE  byBytesPerMAU,
BYTE *  pbyAccessInfo 
)
virtual

Reads memory from the target system.

Returns
  • ICONNECT_E_CAN_NOT_ACCESS - Memory can not be accessed. This can be caused by bad memory area specification, out of range address, unavailability of the requested access mode (real-time) or the CPU is not in a mode that allows memory access.
  • ICONNECT_E_SIZE - The byBytesPerMAU value is incorrect for the specified memory area.
Parameters
dwAccessFlagsUse IConnectDebug::EAccessFlags | EMemoryAccessFlags
byMemAreaMemory space. Definitions for individual CPUs are provided in MemArea.h
aAddressAddress of the memory location of the first access.
aNumMAUsNumber of MAUs (memory addressable units) to read.
pbyBufThe buffer to receive the read out data. Note that for memory areas with MAU size other than 8 bits (PIC Program, ARM CP, etc), the pbyBuf must be large enough to accommodate all data. Data is placed in consecutive locations in the buffer, i.e. the MAU from aAddress is placed first, MAU from aAddress+1 is placed next etc.

Within a MAU the byte ordering is LSB. For the 14 bit maProgramPIC16XX area a read from address 10 would yield the following format:

      ADDR = 10              ADDR = 11               ADDR = 12
  ====================   =====================   ====================
  (7-0)      xx(13-8)    (7-0)       xx(13-8)    (7-0)      xx(13-8)
  pbyBuf[0]  pbyBuf[1]   pbyBuf[2]   pbyBuf[3]   pbyBuf[4]  pbyBuf[5]

  
Parameters
byBytesPerMAUNumber of BYTE type locations required to fit one MAU (memory addressable unit). The number of bytes required for every MAU is:
MAU Size Bytes Required per MAU
1 - 8 1
9 - 16 2
17 - 32 4

winIDEA will check this parameter and return ICONNECT_E_SIZE in case of mismatch.

Parameters
pbyAccessInfoThe buffer to receive information about access to every individual location. One byte must be allocated per MAU. If this parameter is NULL, no access information will be returned.

◆ ReadRegister()

virtual HRESULT IConnectDebug::ReadRegister ( DWORD  dwAccessFlags,
LPCSTR  pszRegisterName,
SValue pValue,
SType pType 
)
virtual

Reads the specified register.

Returns
  • ICONNECT_E_BAD_ID - The specified register does not exist.
  • ICONNECT_E_SIZE - The specified register is to long to fit SValue.
  • ICONNECT_E_CAN_NOT_ACCESS - The register can not be accessed in the current CPU mode.
Parameters
dwAccessFlagsSee IConnectDebug::EAccessFlags for available flags, except fCacheCode
pszRegisterNameName of the register to read.
pValuePointer to a SValue type variable that will receive the value.
pTypeContains the type info of pValue.

◆ ReadValue()

virtual HRESULT IConnectDebug::ReadValue ( DWORD  dwAccessFlags,
BYTE  byMemArea,
ADDRESS  aAddress,
SValue pValue,
const SType pType 
)
virtual

Reads a value from the target system.

This function resembles ReadMemory but additionally it formats the value according to the type specified (including endian conversions).

Returns
S_FALSE - symbol not found
Parameters
dwAccessFlagsUse IConnectDebug::EAccessFlags, except fCore, and fSFR.
byMemAreaMemory space. Definitions for individual CPUs are provided in MemArea.h
aAddressAddress of the memory location of the first access.
pValuePointer to a SValue type variable that will receive the value.
pTypePointer to a SType type variable containing the type info of pValue.

◆ RunControl()

virtual HRESULT IConnectDebug::RunControl ( DWORD  dwRunControlFlags,
BYTE  byMemArea,
ADDRESS  aAddress 
)
virtual

Performs a run control operation.

Note that IConnectDebug::rRun, IConnectDebug::rRunUntil and IConnectDebug::rRunUntilReturn functions are 'non-blocking' - when they return the CPU might still be running. rWaitForStop flag yields blocking operation'. If the wait expires, ICONNECT_E_TIMEOUT is returned

Returns
ICONNECT_E_NOT_AVAILABLE - The requested operation is not available. ICONNECT_E_TIMEOUT - wait expired
Parameters
dwRunControlFlagsSpecifies which register domain to access. See IConnectDebug::ERunControlFlags
byMemAreaDetermines the address space of the breakpoint.
aAddressAddress used by IConnectDebug::rRunUntil and IConnectDebug::rGoto commands.

◆ SetBreakpoint()

virtual HRESULT IConnectDebug::SetBreakpoint ( DWORD  dwBreakpointFlags,
BYTE  byMemArea,
ADDRESS  aAddress,
LPCSTR  pszAddress,
DWORD  dwLine 
)
virtual

Controls breakpoint setting.

Returns
  • S_FALSE - Breakpoint could not be set - probably already exists.
  • ICONNECT_E_BAD_ID - The pszAddress does not evaluate to a location.
  • ICONNECT_E_ERROR - Breakpoint could not be set.
  • ICONNECT_E_NO_BREAKPOINT - No breakpoint was found at the specified address.
Parameters
dwBreakpointFlagsDetermines the breakpoint operation. See IConnectDebug::EBreakpointFlags
byMemAreaDetermines the address space of the breakpoint. This value is used only if bAddress flag is used.
aAddressDetermines the address of the breakpoint. This value is used only if bAddress flag is used.
pszAddressDetermines the address of the breakpoint:
  • If bSymbol flag is used this string is interpreted as a symbol (function name, code label).
  • If bSource flag is used, this string is interpreted as file name.
dwLineIf bSource flag is used, dwLine specifies the line number. If bHW flag is used, dwLine specifies the access data value

◆ WriteMemory()

virtual HRESULT IConnectDebug::WriteMemory ( DWORD  dwAccessFlags,
BYTE  byMemArea,
ADDRESS  aAddress,
ADDRESS  aNumMAUs,
const BYTE *  pbyBuf,
BYTE  byBytesPerMAU,
BYTE *  pbyAccessInfo 
)
virtual

Writes memory to the target system.

Returns
  • ICONNECT_E_CAN_NOT_ACCESS - Memory can not be accessed. This can be caused by bad memory area specification, out of range address, unavailability of the requested access mode (real-time) or the CPU is not in a mode that allows memory access.
  • ICONNECT_E_SIZE - The byBytesPerMAU value is incorrect for the specified memory area.
Parameters
dwAccessFlagsUse IConnectDebug::EAccessFlags | EMemoryAccessFlags except fCacheXXX.
byMemAreaMemory space. Definitions for individual CPUs are provided in MemArea.h
aAddressAddress of the memory location of the first access.
aNumMAUsNumber of MAUs (memory addressable units) to read.
pbyBufThe buffer to receive the read out data. Note that for memory areas with MAU size other than 8 bits (PowerPC SPR, ARM CP, etc), the pbyBuf must be large enough to accommodate all data. Data is placed in consecutive locations in the buffer, i.e. the MAU from aAddress is placed first, MAU from aAddress+1 is placed next etc.

Within a MAU the byte ordering is LSB.

Parameters
byBytesPerMAUNumber of BYTE type locations required to fit one MAU (memory addressable unit). The number of bytes required for every MAU is:
MAU Size Bytes Required per MAU
1 - 8 1
9 - 16 2
17 - 32 4

winIDEA will check this parameter and return ICONNECT_E_SIZE in case of mismatch. If byBytesPerMAU==1 is requested on non-1 byte per MAU area and the requested aNumMAUs is a multiple of it, the request is accepted and processed

Parameters
pbyAccessInfoThe buffer to receive information about access to every individual location. One byte must be allocated per MAU. If this parameter is NULL, no access information will be returned.

◆ WriteRegister()

virtual HRESULT IConnectDebug::WriteRegister ( DWORD  dwAccessFlags,
LPCSTR  pszRegisterName,
const SValue pValue,
const SType pType 
)
virtual

Writes the specified register.

Returns
  • ICONNECT_E_BAD_ID - The specified register does not exist.
  • ICONNECT_S_SIZE - The specified value is to long to fit register.
  • ICONNECT_E_CAN_NOT_ACCESS - The register can not be accessed in the current CPU mode.
Parameters
dwAccessFlagsSee IConnectDebug::EAccessFlags for available flags, except fCacheCode
pszRegisterNameName of the register to write to.
pValueStores a value to be written to the register.
pTypeContains the type info of pValue.

◆ WriteValue()

virtual HRESULT IConnectDebug::WriteValue ( DWORD  dwAccessFlags,
BYTE  byMemArea,
ADDRESS  aAddress,
const SValue pValue,
const SType pType 
)
virtual

Writes a value to the target system.

This function resembles WriteMemory but additionally it formats the value according to the type specified (including endian conversions).

Parameters
dwAccessFlagsUse IConnectDebug::EAccessFlags, except fCore, fSFR, and fCacheXXX.
byMemAreaMemory space. Definitions for individual CPUs are provided in MemArea.h
aAddressAddress of the memory location of the first access.
pValuePointer to a SValue type variable containing the value to write.
pTypePointer to a SType type variable containing the type info of pValue.