winIDEA SDK
isys::CDebugFacade Class Reference

Description

This class is a facade for few other classes.

It adds no new functionality, but provides all-in-one interface for the most common isystem.connect operations. It contains most of the functionality of the following classes:


#include <CDebugFacade.h>

Public Member Functions

 CDebugFacade (std::shared_ptr< ConnectionMgr > connectionMgr)
 Instantiates object. More...
 
CAddressControllerSPtr getAddressController ()
 Returns reference to address controller. More...
 
CBreakpointControllerSPtr getBreakpointController ()
 Returns reference to breakpoint controller. More...
 
CDataControllerSPtr getDataController ()
 Returns reference to data controller. More...
 
CExecutionControllerSPtr getExecutionController ()
 Returns reference to execution controller. More...
 
CLoaderControllerSPtr getLoaderController ()
 Returns reference to loader controller. More...
 
int getCodeArea (bool bPhysical)
 See documentation of CAddressController::getCodeArea(bool) .
 
CMemAddress getFunctionAddress (const std::string &functionName)
 See documentation of CAddressController::getFunctionAddress(const std::string &) .
 
CMemAddress getVariableAddress (const std::string &variableName)
 See documentation of CAddressController#getVariableAddress(const std::string &).
 
CMemAddress getExpressionAddress (const std::string &expression)
 See documentation of CAddressController#getExpressionAddress(const std::string &).
 
CMemAddress getLabelAddress (const std::string &labelName)
 See documentation of CAddressController#getLabelAddress(const std::string &).
 
CSymbolInfo getSymbolInfo (uint32_t flags, const std::string &expression)
 See documentation of CAddressController#getSymbolInfo(uint32_t, const std::string &).
 
std::string getSymbolAtAddress (isys::IConnectDebug::ESymbolFlags symbolType, uint8_t memArea, ADDRESS_64 address, isys::IConnectDebug::ESymbolFlags scope=isys::IConnectDebug::sScopeExact)
 See documentation of CAddressController#getSymbolAtAddress(isys::IConnectDebug::ESymbolFlags, uint8_t, ADDRESS_64, isys::IConnectDebug::ESymbolFlags).
 
iconnect::AddressVector getAddressOfSourceLine (const std::string &fileName, int line, bool isReportSize=false)
 See documentation of CAddressController#getAddressOfSourceLine(const std::string &,int,bool).
 
CLineLocation getSourceLineAtAddress (ADDRESS_64 address)
 See documentation of CAddressController#getSourceLineAtAddress(ADDRESS_64).
 
CLineLocation getSourceLineAtAddress (ADDRESS_64 address, bool isExact, bool isAbsolutePath)
 See documentation of CAddressController#getSourceLineAtAddress(ADDRESS_64, bool, bool).
 
int setBP (const std::string &symbolName, int conditionCount=0, const std::string &conditionExpression="")
 See documentation of CBreakpointController#setBP(const std::string &, int, const std::string &).
 
int setBP (int lineNumber, const std::string &fileName, int conditionCount=0, const std::string &conditionExpression="")
 See documentation of CBreakpointController#setBP(int, const std::string &, int, const std::string &).
 
int setBP (int memArea, ADDRESS_64 address, int conditionCount=0, const std::string &conditionExpression="")
 See documentation of CBreakpointController#setBP(int, ADDRESS_64, int, const std::string &).
 
int setHWBP (uint32_t rwAccess, uint32_t accessSize, uint32_t usedDataBytes, bool isEntireObject, const std::string &symbolName, uint32_t data)
 See documentation of CBreakpointController#setHWBP(DWORD, DWORD, DWORD, bool, const std::string &, DWORD).
 
int setHWBP (uint32_t rwAccess, uint32_t accessSize, uint32_t usedDataBytes, int memArea, ADDRESS_64 address, uint32_t data)
 See documentation of CBreakpointController#setHWBP(DWORD, DWORD, DWORD, int, ADDRESS_64, DWORD).
 
int deleteBP (const std::string &symbolName)
 See documentation of CBreakpointController#deleteBP(const std::string &).
 
int deleteBP (const std::string &fileName, int lineNumber)
 See documentation of CBreakpointController#deleteBP(const std::string &, int).
 
int deleteBP (int memArea, ADDRESS_64 address)
 See documentation of CBreakpointController#deleteBP(int, ADDRESS_64).
 
int deleteHWBP (const std::string &symbolName)
 See documentation of CBreakpointController#deleteHWBP(const std::string &).
 
int deleteHWBP (int memArea, ADDRESS_64 address)
 See documentation of CBreakpointController#deleteHWBP(int, ADDRESS_64).
 
int deleteAll ()
 See documentation of CBreakpointController#deleteAll().
 
int deleteAllHWBP ()
 See documentation of CBreakpointController#deleteAllHWBP().
 
int setEnabled (bool isEnabled, const std::string &symbolName)
 See documentation of CBreakpointController#setEnabled(bool, const std::string &).
 
int setEnabled (bool isEnabled, const std::string &fileName, int lineNumber)
 See documentation of CBreakpointController#setEnabled(bool, const std::string &, int).
 
int setEnabled (bool isEnabled, int memArea, ADDRESS_64 address)
 See documentation of CBreakpointController#setEnabled(bool, int, ADDRESS_64).
 
int setHWEnabled (bool isEnabled, const std::string &symbolName)
 See documentation of CBreakpointController#setHWEnabled(bool, const std::string &).
 
int setHWEnabled (bool isEnabled, int memArea, ADDRESS_64 address)
 See documentation of CBreakpointController#setHWEnabled(bool, int, ADDRESS_64).
 
int setHWEnabledAll (bool isEnabled)
 See documentation of CBreakpointController#setHWEnabledAll(bool).
 
int setEnabledAll (bool isEnabled)
 See documentation of CBreakpointController#setEnabledAll(bool).
 
int reapplyAll ()
 See documentation of CBreakpointController#reapplyAll().
 
CCPUInfo getCPUInfo ()
 See documentation of CDataController#getCPUInfo().
 
int getMemoryAreaBytesPerMAU (int memArea)
 See documentation of CDataController#getMemoryAreaBytesPerMAU(int).
 
std::vector< uint8_t > readMemory (isys::IConnectDebug::EAccessFlags accessFlags, uint8_t memArea, ADDRESS_64 aAddress, ADDRESS_64 aNumMAUs, uint8_t bytesPerMAU)
 See documentation of CDataController#readMemory(IConnectDebug::EAccessFlags, BYTE, ADDRESS_64, ADDRESS_64, BYTE) .
 
std::vector< uint8_t > writeMemory (isys::IConnectDebug::EAccessFlags accessFlags, uint8_t memArea, ADDRESS_64 aAddress, ADDRESS_64 aNumMAUs, uint8_t bytesPerMAU, std::vector< uint8_t > &buff)
 See documentation of CDataController#writeMemory(IConnectDebug::EAccessFlags, BYTE, ADDRESS_64, ADDRESS_64, BYTE, std::vector<BYTE> &).
 
CValueType readRegister (isys::IConnectDebug::EAccessFlags accessFlags, const std::string &registerName)
 See documentation of CDataController#readRegister(IConnectDebug::EAccessFlags, const std::string &).
 
void writeRegister (isys::IConnectDebug::EAccessFlags accessFlags, const std::string &registerName, const CValueType &registerInfo)
 See documentation of CDataController#writeRegister(IConnectDebug::EAccessFlags, const std::string &, const CValueType &).
 
CValueType readValue (isys::IConnectDebug::EAccessFlags accessFlags, uint8_t memArea, ADDRESS_64 aAddress, const SType &type)
 See documentation of CDataController#readValue(IConnectDebug::EAccessFlags, BYTE, ADDRESS_64, const SType &).
 
void writeValue (isys::IConnectDebug::EAccessFlags accessFlags, uint8_t memArea, ADDRESS_64 aAddress, const CValueType &value)
 See documentation of CDataController#writeValue(IConnectDebug::EAccessFlags, BYTE, ADDRESS_64, const CValueType &).
 
void writeValue (isys::IConnectDebug::EAccessFlags accessFlags, bool isRefreshWinIDEAGUIAfterWrite, uint8_t memArea, ADDRESS_64 aAddress, const CValueType &value)
 See documentation of CDataController#writeValue(IConnectDebug::EAccessFlags, bool, BYTE, ADDRESS_64, const CValueType &).
 
CValueType evaluate (isys::IConnectDebug::EAccessFlags accessFlags, const std::string &expression)
 See documentation of CDataController#evaluate(IConnectDebug#EAccessFlags, const std::string &).
 
CValueType evaluate (isys::IConnectDebug::EAccessFlags accessFlags, isys::IConnectDebug::EEvaluate evaluateFlags, const std::string &expression)
 See documentation of CDataController#evaluate(IConnectDebug::EAccessFlags, IConnectDebug::EEvaluate, const std::string &).
 
std::string modify (isys::IConnectDebug::EAccessFlags accessFlags, const std::string &expression, const CValueType &value)
 See documentation of CDataController#modify(IConnectDebug::EAccessFlags, const std::string &, const CValueType &, bool).
 
std::string modify (isys::IConnectDebug::EAccessFlags accessFlags, const std::string &expression, const std::string &value)
 See documentation of CDataController#modify(IConnectDebug::EAccessFlags, const std::string &, const std::string &, bool).
 
std::string modify (isys::IConnectDebug::EAccessFlags accessFlags, isys::IConnectDebug::EEvaluate evaluateFlags, const std::string &expression, const CValueType &value)
 See documentation of CDataController#modify(IConnectDebug::EAccessFlags, IConnectDebug::EEvaluate, const std::string &, const CValueType &, bool).
 
std::string modify (isys::IConnectDebug::EAccessFlags accessFlags, isys::IConnectDebug::EEvaluate evaluateFlags, const std::string &expression, const std::string &value)
 See documentation of CDataController#modify(IConnectDebug::EAccessFlags, IConnectDebug::EEvaluate, const std::string &, const std::string &, bool).
 
int run ()
 See documentation of CExecutionController#run().
 
int run (CExecutionController::ETimeoutMode timeoutMode)
 See documentation of CExecutionController#run(CExecutionController::ETimeoutMode, bool).
 
int runUntilReturn ()
 See documentation of CExecutionController#runUntilReturn().
 
int runUntilReturn (CExecutionController::ETimeoutMode timeoutMode)
 See documentation of CExecutionController#runUntilReturn(isys::CExecutionController::ETimeoutMode, bool).
 
int runUntilAddress (uint8_t memArea, ADDRESS_64 address)
 See documentation of CExecutionController#runUntilAddress(uint8_t, ADDRESS_64).
 
int runUntilAddress (uint8_t memArea, ADDRESS_64 address, CExecutionController::ETimeoutMode timeoutMode)
 See documentation of CExecutionController#runUntilAddress(uint8_t, ADDRESS_64, CExecutionController::ETimeoutMode, bool).
 
int runUntilFunction (const std::string &functionName)
 See documentation of CExecutionController#runUntilFunction(const std::string &).
 
int runUntilFunction (const std::string &functionName, CExecutionController::ETimeoutMode timeoutMode)
 See documentation of CExecutionController#runUntilFunction(const std::string &, CExecutionController::ETimeoutMode, bool).
 
int setSlowRun (bool isSlowRun)
 See documentation of CExecutionController#setSlowRun(bool).
 
void gotoAddress (uint8_t memArea, ADDRESS_64 address)
 See documentation of CExecutionController#gotoAddress(uint8_t, ADDRESS_64).
 
void gotoFunction (const std::string &functionName)
 See documentation of CExecutionController#gotoFunction(const std::string &).
 
void reset ()
 See documentation of CExecutionController#reset().
 
void stop ()
 See documentation of CExecutionController#stop().
 
void stepHigh (CExecutionController::ETimeoutMode timeoutMode=CExecutionController::TOUT_10s, bool throwOnTimeout=true)
 See documentation of CExecutionController#stepHigh().
 
void stepOverHigh (CExecutionController::ETimeoutMode timeoutMode=CExecutionController::TOUT_10s, bool throwOnTimeout=true)
 See documentation of CExecutionController#stepOverHigh(CExecutionController::ETimeoutMode, bool).
 
void stepInst (CExecutionController::ETimeoutMode timeoutMode=CExecutionController::TOUT_10s, bool throwOnTimeout=true)
 See documentation of CExecutionController#stepInst().
 
void stepOverInst (CExecutionController::ETimeoutMode timeoutMode=CExecutionController::TOUT_10s, bool throwOnTimeout=true)
 See documentation of CExecutionController#stepOverInst(CExecutionController::ETimeoutMode, bool).
 
std::string call (const std::string &functionName)
 See documentation of CExecutionController#call(const std::string &). More...
 
CPUStatus getCPUStatus (bool wantStopReason=true)
 See documentation of CExecutionController#getCPUStatus(bool).
 
void setPollingEnabled (bool isEnabled)
 See documentation of CExecutionController#setPollingEnabled(bool).
 
bool waitUntilStopped (int timeoutMs=0, uint32_t pollingIntervalMs=100)
 See documentation of CExecutionController#waitUntilStopped(int, uint32_t, bool).
 
bool waitWhileRunning (int timeoutMs, uint32_t pollingIntervalMs=100)
 See documentation of CExecutionController#waitWhileRunning(int, uint32_t, bool).
 
int download ()
 See documentation of CLoaderController#download().
 
int runUntilExpression (const std::string &expression)
 This method evaluates the given expression, which must evaluate to address. More...
 
int runUntilExpression (const std::string &expression, CExecutionController::ETimeoutMode timeoutMode)
 This method evaluates the given expression, which must evaluate to address. More...
 

Constructor & Destructor Documentation

◆ CDebugFacade()

isys::CDebugFacade::CDebugFacade ( std::shared_ptr< ConnectionMgr connectionMgr)

Instantiates object.

Parameters
connectionMgrclass which maintains connection to winIDEA. Connection must be established before this call.

Python example: test_get_controllers.py

Member Function Documentation

◆ call()

std::string isys::CDebugFacade::call ( const std::string &  functionName)

See documentation of CExecutionController#call(const std::string &).

If you need to specify function parameters, use overloads of this method in CExecutionController.

◆ getAddressController()

CAddressControllerSPtr isys::CDebugFacade::getAddressController ( )

Returns reference to address controller.

Python example: test_get_controllers.py

◆ getBreakpointController()

CBreakpointControllerSPtr isys::CDebugFacade::getBreakpointController ( )

Returns reference to breakpoint controller.

Python example: test_get_controllers.py

◆ getDataController()

CDataControllerSPtr isys::CDebugFacade::getDataController ( )

Returns reference to data controller.

Python example: test_get_controllers.py

◆ getExecutionController()

CExecutionControllerSPtr isys::CDebugFacade::getExecutionController ( )

Returns reference to execution controller.

Python example: test_get_controllers.py

◆ getLoaderController()

CLoaderControllerSPtr isys::CDebugFacade::getLoaderController ( )

Returns reference to loader controller.

Python example: test_get_controllers.py

◆ runUntilExpression() [1/2]

int isys::CDebugFacade::runUntilExpression ( const std::string &  expression)

This method evaluates the given expression, which must evaluate to address.

Then it runs the target with runUntilAddress. This method aggregates calls to CDataController#evaluate and CExecutionController#runUntilAddress and does not have equivalent in CExecutionController. This method returns immediately - the target may still be in running mode after return!

Parameters
expressionexpression, which evaluates to address. This can be one of
  • function name, for example 'main'
  • label, for example 'calc_speed_EXIT'
  • literal value, for example '0x40004356'
  • expression, for example: '&main + 0x42'. Note the '&' before main!
Returns
S_OK if operation passed, ICONNECT_E_TIMEOUT in case of timeout or ICONNECT_S_MSG_WARN in case of a warning Python example: test_run_until_expression.py

◆ runUntilExpression() [2/2]

int isys::CDebugFacade::runUntilExpression ( const std::string &  expression,
CExecutionController::ETimeoutMode  timeoutMode 
)

This method evaluates the given expression, which must evaluate to address.

Then it runs the target with runUntilAddress. This method aggregates calls to CDataController#evaluate and CExecutionController#runUntilAddress and does not have equivalent in CExecutionController.

Parameters
expressionexpression, which evaluates to address. This can be one of
  • function name, for example 'main'
  • label, for example 'calc_speed_EXIT'
  • literal value, for example '0x40004356'
  • expression, for example: '&main + 0x42'. Note the '&' before main!
timeoutModetimeout mode
Returns
S_OK if operation passed, ICONNECT_E_TIMEOUT in case of timeout or ICONNECT_S_MSG_WARN in case of warning Python example: test_run_until_expression.py