DebugClients/Python3/DebugClientBase.py

branch
6_1_x
changeset 4946
c7b333448ad5
parent 4848
36b1d9bec8f6
child 4947
20dcf00d83b3
equal deleted inserted replaced
4938:78287a4f976b 4946:c7b333448ad5
573 exec(code, self.debugMod.__dict__) 573 exec(code, self.debugMod.__dict__)
574 except SystemExit as exc: 574 except SystemExit as exc:
575 res = exc.code 575 res = exc.code
576 atexit._run_exitfuncs() 576 atexit._run_exitfuncs()
577 self.writestream.flush() 577 self.writestream.flush()
578 self.progTerminated(res, exit=True) 578 self.progTerminated(res)
579 return 579 return
580 580
581 if cmd == DebugProtocol.RequestProfile: 581 if cmd == DebugProtocol.RequestProfile:
582 sys.setprofile(None) 582 sys.setprofile(None)
583 import PyProfile 583 import PyProfile
619 except SystemExit as exc: 619 except SystemExit as exc:
620 res = exc.code 620 res = exc.code
621 atexit._run_exitfuncs() 621 atexit._run_exitfuncs()
622 self.prof.save() 622 self.prof.save()
623 self.writestream.flush() 623 self.writestream.flush()
624 self.progTerminated(res, exit=True) 624 self.progTerminated(res)
625 return 625 return
626 626
627 if cmd == DebugProtocol.RequestCoverage: 627 if cmd == DebugProtocol.RequestCoverage:
628 from coverage import coverage 628 from coverage import coverage
629 sys.argv = [] 629 sys.argv = []
670 res = exc.code 670 res = exc.code
671 atexit._run_exitfuncs() 671 atexit._run_exitfuncs()
672 self.cover.stop() 672 self.cover.stop()
673 self.cover.save() 673 self.cover.save()
674 self.writestream.flush() 674 self.writestream.flush()
675 self.progTerminated(res, exit=True) 675 self.progTerminated(res)
676 return 676 return
677 677
678 if cmd == DebugProtocol.RequestShutdown: 678 if cmd == DebugProtocol.RequestShutdown:
679 self.sessionClose() 679 self.sessionClose()
680 return 680 return
1048 self.writestream.write(s) 1048 self.writestream.write(s)
1049 self.writestream.flush() 1049 self.writestream.flush()
1050 1050
1051 def __interact(self): 1051 def __interact(self):
1052 """ 1052 """
1053 Private method to Interact with the debugger. 1053 Private method to Interact with the debugger.
1054 """ 1054 """
1055 global DebugClientInstance 1055 global DebugClientInstance
1056 1056
1057 self.setDescriptors(self.readstream, self.writestream) 1057 self.setDescriptors(self.readstream, self.writestream)
1058 DebugClientInstance = self 1058 DebugClientInstance = self
1072 self.pollingDisabled = disablePolling 1072 self.pollingDisabled = disablePolling
1073 1073
1074 while self.eventExit is None: 1074 while self.eventExit is None:
1075 wrdy = [] 1075 wrdy = []
1076 1076
1077 if self.writestream.nWriteErrors > self.writestream.maxtries:
1078 break
1079
1077 if AsyncPendingWrite(self.writestream): 1080 if AsyncPendingWrite(self.writestream):
1078 wrdy.append(self.writestream) 1081 wrdy.append(self.writestream)
1079 1082
1080 if AsyncPendingWrite(self.errorstream): 1083 if AsyncPendingWrite(self.errorstream):
1081 wrdy.append(self.errorstream) 1084 wrdy.append(self.errorstream)
1305 1308
1306 @return flag indicating a running debug session (boolean) 1309 @return flag indicating a running debug session (boolean)
1307 """ 1310 """
1308 return self.running 1311 return self.running
1309 1312
1310 def progTerminated(self, status, exit=False): 1313 def progTerminated(self, status):
1311 """ 1314 """
1312 Public method to tell the debugger that the program has terminated. 1315 Public method to tell the debugger that the program has terminated.
1313 1316
1314 @param status return status 1317 @param status return status
1315 @param exit flag indicating to perform a sys.exit() 1318 @type int
1316 @type bool
1317 """ 1319 """
1318 if status is None: 1320 if status is None:
1319 status = 0 1321 status = 0
1320 else: 1322 else:
1321 try: 1323 try:
1325 1327
1326 if self.running: 1328 if self.running:
1327 self.set_quit() 1329 self.set_quit()
1328 self.running = None 1330 self.running = None
1329 self.write('{0}{1:d}\n'.format(DebugProtocol.ResponseExit, status)) 1331 self.write('{0}{1:d}\n'.format(DebugProtocol.ResponseExit, status))
1330 if exit:
1331 self.writestream.close(True)
1332 sys.exit(status)
1333 1332
1334 # reset coding 1333 # reset coding
1335 self.__coding = self.defaultCoding 1334 self.__coding = self.defaultCoding
1336 1335
1337 def __dumpVariables(self, frmnr, scope, filter): 1336 def __dumpVariables(self, frmnr, scope, filter):

eric ide

mercurial