DebugClients/Python3/DebugClientBase.py

changeset 2371
72e2f353f34b
parent 2302
f29e9405c851
child 2376
a0409e65bd81
equal deleted inserted replaced
2370:e4a2a12f8e23 2371:72e2f353f34b
14 import traceback 14 import traceback
15 import os 15 import os
16 import time 16 import time
17 import imp 17 import imp
18 import re 18 import re
19 import atexit
19 20
20 21
21 import DebugProtocol 22 import DebugProtocol
22 import DebugClientCapabilities 23 import DebugClientCapabilities
23 from DebugBase import setRecursionLimit, printerr # __IGNORE_WARNING__ 24 from DebugBase import setRecursionLimit, printerr # __IGNORE_WARNING__
606 607
607 if int(erase): 608 if int(erase):
608 self.cover.erase() 609 self.cover.erase()
609 sys.modules['__main__'] = self.debugMod 610 sys.modules['__main__'] = self.debugMod
610 self.debugMod.__dict__['__file__'] = sys.argv[0] 611 self.debugMod.__dict__['__file__'] = sys.argv[0]
611 self.cover.start() 612 fp = open(sys.argv[0], encoding=self.__coding)
612 exec(open(sys.argv[0], encoding=self.__coding).read(), 613 try:
613 self.debugMod.__dict__) 614 script = fp.read()
614 self.cover.stop() 615 finally:
615 self.cover.save() 616 fp.close()
616 self.writestream.flush() 617 if script:
618 if not script.endswith('\n'):
619 script += '\n'
620 code = compile(script, sys.argv[0], 'exec')
621 self.cover.start()
622 try:
623 exec(code, self.debugMod.__dict__)
624 except SystemExit:
625 atexit._run_exitfuncs()
626 self.cover.stop()
627 self.cover.save()
628 self.writestream.flush()
617 return 629 return
618 630
619 if cmd == DebugProtocol.RequestShutdown: 631 if cmd == DebugProtocol.RequestShutdown:
620 self.sessionClose() 632 self.sessionClose()
621 return 633 return

eric ide

mercurial