1
2
3
4
5import isystem.connect as ic
6
7
8winidea_id = ''
9
10
11def test_seedGetStackUsage():
12 connMgr = ic.ConnectionMgr()
13 connMgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
14
15
16 sessCtrl = ic.CSessionCtrl(connMgr)
17 execCtrl = ic.CExecutionController(connMgr)
18 addrCtrl = ic.CAddressController(connMgr)
19 cfgCtrl = ic.CConfigurationController(connMgr)
20 dataCtrl = ic.CDataController(connMgr)
21
22
23 userStackEnd = addrCtrl.getVariableAddress('_edata')
24
25
26 endAddr = userStackEnd.getAddress()
27 startAddr = endAddr - 1024
28 value = 0x55
29
30
31 stack_cfg = cfgCtrl.ide_app().opt('StackUsage')
32
33
34 stack_cfg.set_bool('Use', True)
35 stack_cfg.set_uint('Pattern', value)
36 stack_cfg.set('Position', 'End')
37 stack_cfg.set('Start', str(hex(startAddr)))
38 stack_cfg.set('End', str(hex(endAddr)))
39
40 sessCtrl.begin_reset()
41 execCtrl.run()
42 execCtrl.stop()
43
44 dataCtrl.seedStack()
45
46 stackUsage = dataCtrl.getStackUsage()
47 print(f"Base address: {stackUsage.getBase()}")
48 print(f"Stack size: {stackUsage.getSize()}")
49 print(f"Used stack size: {stackUsage.getUsed()}")
50
51 stack_cfg.set_bool('Use', False)
52
53
54if __name__ == "__main__":
55 test_seedGetStackUsage()