import isystem.connect as ic
winidea_id = ''
def test_seedGetStackUsage():
connMgr = ic.ConnectionMgr()
connMgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
sessCtrl = ic.CSessionCtrl(connMgr)
execCtrl = ic.CExecutionController(connMgr)
addrCtrl = ic.CAddressController(connMgr)
cfgCtrl = ic.CConfigurationController(connMgr)
dataCtrl = ic.CDataController(connMgr)
userStackEnd = addrCtrl.getVariableAddress('_edata')
endAddr = userStackEnd.getAddress()
startAddr = endAddr - 1024
value = 0x55
stack_cfg = cfgCtrl.ide_app().opt('StackUsage')
stack_cfg.set_bool('Use', True)
stack_cfg.set_uint('Pattern', value)
stack_cfg.set('Position', 'End')
stack_cfg.set('Start', str(hex(startAddr)))
stack_cfg.set('End', str(hex(endAddr)))
sessCtrl.begin_reset()
execCtrl.run()
execCtrl.stop()
dataCtrl.seedStack()
stackUsage = dataCtrl.getStackUsage()
print(f"Base address: {stackUsage.getBase()}")
print(f"Stack size: {stackUsage.getSize()}")
print(f"Used stack size: {stackUsage.getUsed()}")
stack_cfg.set_bool('Use', False)
if __name__ == "__main__":
test_seedGetStackUsage()