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

std::string call (const std::string &functionName)
 See documentation of CExecutionController#call(const std::string &). More...
 
 CDebugFacade (std::shared_ptr< ConnectionMgr > connectionMgr)
 Instantiates object. More...
 
int deleteAll ()
 See documentation of CBreakpointController#deleteAll().
 
int deleteAllHWBP ()
 See documentation of CBreakpointController#deleteAllHWBP().
 
int deleteBP (const std::string &fileName, int lineNumber)
 See documentation of CBreakpointController#deleteBP(const std::string &, int).
 
int deleteBP (const std::string &symbolName)
 See documentation of CBreakpointController#deleteBP(const std::string &).
 
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 download ()
 See documentation of CLoaderController#download().
 
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 &).
 
CAddressControllerSPtr getAddressController ()
 Returns reference to address controller. More...
 
iconnect::AddressVector getAddressOfSourceLine (const std::string &fileName, int line, bool isReportSize=false)
 See documentation of CAddressController#getAddressOfSourceLine(const std::string &,int,bool).
 
CBreakpointControllerSPtr getBreakpointController ()
 Returns reference to breakpoint controller. More...
 
int getCodeArea (bool bPhysical)
 See documentation of CAddressController::getCodeArea(bool) .
 
CCPUInfo getCPUInfo ()
 See documentation of CDataController#getCPUInfo().
 
CPUStatus getCPUStatus (bool wantStopReason=true)
 See documentation of CExecutionController#getCPUStatus(bool).
 
CDataControllerSPtr getDataController ()
 Returns reference to data controller. More...
 
CExecutionControllerSPtr getExecutionController ()
 Returns reference to execution controller. More...
 
CMemAddress getExpressionAddress (const std::string &expression)
 See documentation of CAddressController#getExpressionAddress(const std::string &).
 
CMemAddress getFunctionAddress (const std::string &functionName)
 See documentation of CAddressController::getFunctionAddress(const std::string &) .
 
CMemAddress getLabelAddress (const std::string &labelName)
 See documentation of CAddressController#getLabelAddress(const std::string &).
 
CLoaderControllerSPtr getLoaderController ()
 Returns reference to loader controller. More...
 
int getMemoryAreaBytesPerMAU (int memArea)
 See documentation of CDataController#getMemoryAreaBytesPerMAU(int).
 
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).
 
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).
 
CSymbolInfo getSymbolInfo (uint32_t flags, const std::string &expression)
 See documentation of CAddressController#getSymbolInfo(uint32_t, const std::string &).
 
CMemAddress getVariableAddress (const std::string &variableName)
 See documentation of CAddressController#getVariableAddress(const std::string &).
 
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 &).
 
std::string modify (isys::IConnectDebug::EAccessFlags accessFlags, const std::string &expression, const CValueType &value, bool readBack=true)
 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, bool readBack=true)
 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, bool readBack=true)
 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, bool readBack=true)
 See documentation of CDataController#modify(IConnectDebug::EAccessFlags, IConnectDebug::EEvaluate, const std::string &, const std::string &, bool).
 
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) .
 
CValueType readRegister (isys::IConnectDebug::EAccessFlags accessFlags, const std::string &registerName)
 See documentation of CDataController#readRegister(IConnectDebug::EAccessFlags, const std::string &).
 
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 &).
 
int reapplyAll ()
 See documentation of CBreakpointController#reapplyAll().
 
void reset ()
 See documentation of CExecutionController#reset().
 
int run ()
 See documentation of CExecutionController#run().
 
int run (CExecutionController::ETimeoutMode timeoutMode)
 See documentation of CExecutionController#run(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 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...
 
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 runUntilReturn ()
 See documentation of CExecutionController#runUntilReturn().
 
int runUntilReturn (CExecutionController::ETimeoutMode timeoutMode)
 See documentation of CExecutionController#runUntilReturn(isys::CExecutionController::ETimeoutMode, 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 setEnabled (bool isEnabled, const std::string &fileName, int lineNumber)
 See documentation of CBreakpointController#setEnabled(bool, const std::string &, int).
 
int setEnabled (bool isEnabled, const std::string &symbolName)
 See documentation of CBreakpointController#setEnabled(bool, const std::string &).
 
int setEnabled (bool isEnabled, int memArea, ADDRESS_64 address)
 See documentation of CBreakpointController#setEnabled(bool, int, ADDRESS_64).
 
int setEnabledAll (bool isEnabled)
 See documentation of CBreakpointController#setEnabledAll(bool).
 
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 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).
 
void setPollingEnabled (bool isEnabled)
 See documentation of CExecutionController#setPollingEnabled(bool).
 
int setSlowRun (bool isSlowRun)
 See documentation of CExecutionController#setSlowRun(bool).
 
void stepHigh (CExecutionController::ETimeoutMode timeoutMode=CExecutionController::TOUT_10s, bool throwOnTimeout=true)
 See documentation of CExecutionController#stepHigh().
 
void stepInst (CExecutionController::ETimeoutMode timeoutMode=CExecutionController::TOUT_10s, bool throwOnTimeout=true)
 See documentation of CExecutionController#stepInst().
 
void stepOverHigh (CExecutionController::ETimeoutMode timeoutMode=CExecutionController::TOUT_10s, bool throwOnTimeout=true)
 See documentation of CExecutionController#stepOverHigh(CExecutionController::ETimeoutMode, bool).
 
void stepOverInst (CExecutionController::ETimeoutMode timeoutMode=CExecutionController::TOUT_10s, bool throwOnTimeout=true)
 See documentation of CExecutionController#stepOverInst(CExecutionController::ETimeoutMode, bool).
 
void stop ()
 See documentation of CExecutionController#stop().
 
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).
 
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> &).
 
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 &).
 
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 &).
 
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 &).
 

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