DebugClients/Python/DebugClientBase.py

changeset 4943
e093b4e24e97
parent 4834
3605138fa29d
child 4944
d4709f4818bb
equal deleted inserted replaced
4942:d6d362104f83 4943:e093b4e24e97
582 execfile(sys.argv[0], self.debugMod.__dict__) 582 execfile(sys.argv[0], self.debugMod.__dict__)
583 except SystemExit as exc: 583 except SystemExit as exc:
584 res = exc.code 584 res = exc.code
585 atexit._run_exitfuncs() 585 atexit._run_exitfuncs()
586 self.writestream.flush() 586 self.writestream.flush()
587 self.progTerminated(res, exit=True) 587 self.progTerminated(res)
588 return 588 return
589 589
590 if cmd == DebugProtocol.RequestCoverage: 590 if cmd == DebugProtocol.RequestCoverage:
591 from coverage import coverage 591 from coverage import coverage
592 sys.argv = [] 592 sys.argv = []
624 res = exc.code 624 res = exc.code
625 atexit._run_exitfuncs() 625 atexit._run_exitfuncs()
626 self.cover.stop() 626 self.cover.stop()
627 self.cover.save() 627 self.cover.save()
628 self.writestream.flush() 628 self.writestream.flush()
629 self.progTerminated(res, exit=True) 629 self.progTerminated(res)
630 return 630 return
631 631
632 if cmd == DebugProtocol.RequestProfile: 632 if cmd == DebugProtocol.RequestProfile:
633 sys.setprofile(None) 633 sys.setprofile(None)
634 import PyProfile 634 import PyProfile
663 except SystemExit as exc: 663 except SystemExit as exc:
664 res = exc.code 664 res = exc.code
665 atexit._run_exitfuncs() 665 atexit._run_exitfuncs()
666 self.prof.save() 666 self.prof.save()
667 self.writestream.flush() 667 self.writestream.flush()
668 self.progTerminated(res, exit=True) 668 self.progTerminated(res)
669 return 669 return
670 670
671 if cmd == DebugProtocol.RequestShutdown: 671 if cmd == DebugProtocol.RequestShutdown:
672 self.sessionClose() 672 self.sessionClose()
673 return 673 return
1045 self.writestream.write(s) 1045 self.writestream.write(s)
1046 self.writestream.flush() 1046 self.writestream.flush()
1047 1047
1048 def __interact(self): 1048 def __interact(self):
1049 """ 1049 """
1050 Private method to Interact with the debugger. 1050 Private method to Interact with the debugger.
1051 """ 1051 """
1052 global DebugClientInstance 1052 global DebugClientInstance
1053 1053
1054 self.setDescriptors(self.readstream, self.writestream) 1054 self.setDescriptors(self.readstream, self.writestream)
1055 DebugClientInstance = self 1055 DebugClientInstance = self
1069 self.pollingDisabled = disablePolling 1069 self.pollingDisabled = disablePolling
1070 1070
1071 while self.eventExit is None: 1071 while self.eventExit is None:
1072 wrdy = [] 1072 wrdy = []
1073 1073
1074 if self.writestream.nWriteErrors > self.writestream.maxtries:
1075 break
1076
1074 if AsyncPendingWrite(self.writestream): 1077 if AsyncPendingWrite(self.writestream):
1075 wrdy.append(self.writestream) 1078 wrdy.append(self.writestream)
1076 1079
1077 if AsyncPendingWrite(self.errorstream): 1080 if AsyncPendingWrite(self.errorstream):
1078 wrdy.append(self.errorstream) 1081 wrdy.append(self.errorstream)
1302 1305
1303 @return flag indicating a running debug session (boolean) 1306 @return flag indicating a running debug session (boolean)
1304 """ 1307 """
1305 return self.running 1308 return self.running
1306 1309
1307 def progTerminated(self, status, exit=False): 1310 def progTerminated(self, status):
1308 """ 1311 """
1309 Public method to tell the debugger that the program has terminated. 1312 Public method to tell the debugger that the program has terminated.
1310 1313
1311 @param status return status 1314 @param status return status
1312 @param exit flag indicating to perform a sys.exit() 1315 @type int
1313 @type bool
1314 """ 1316 """
1315 if status is None: 1317 if status is None:
1316 status = 0 1318 status = 0
1317 else: 1319 else:
1318 try: 1320 try:
1322 1324
1323 if self.running: 1325 if self.running:
1324 self.set_quit() 1326 self.set_quit()
1325 self.running = None 1327 self.running = None
1326 self.write('%s%d\n' % (DebugProtocol.ResponseExit, status)) 1328 self.write('%s%d\n' % (DebugProtocol.ResponseExit, status))
1327 if exit:
1328 self.writestream.close(1)
1329 sys.exit(status)
1330 1329
1331 # reset coding 1330 # reset coding
1332 self.__coding = self.defaultCoding 1331 self.__coding = self.defaultCoding
1333 1332
1334 def __dumpVariables(self, frmnr, scope, filter): 1333 def __dumpVariables(self, frmnr, scope, filter):

eric ide

mercurial