447 self.user_exception(excinfo, True) |
447 self.user_exception(excinfo, True) |
448 finally: |
448 finally: |
449 sys.settrace(None) |
449 sys.settrace(None) |
450 sys.setprofile(None) |
450 sys.setprofile(None) |
451 |
451 |
452 def run(self, cmd, globalsDict=None, localsDict=None, debug=True): |
452 def run(self, cmd, globalsDict=None, localsDict=None, debug=True, |
|
453 closeSession=True): |
453 """ |
454 """ |
454 Public method to start a given command under debugger control. |
455 Public method to start a given command under debugger control. |
455 |
456 |
456 @param cmd command / code to execute under debugger control |
457 @param cmd command / code to execute under debugger control |
457 @type str or CodeType |
458 @type str or CodeType |
482 sys.settrace(self.trace_dispatch) |
486 sys.settrace(self.trace_dispatch) |
483 |
487 |
484 try: |
488 try: |
485 exec(cmd, globalsDict, localsDict) # secok |
489 exec(cmd, globalsDict, localsDict) # secok |
486 atexit._run_exitfuncs() |
490 atexit._run_exitfuncs() |
487 self._dbgClient.progTerminated(0) |
491 self._dbgClient.progTerminated(0, closeSession=closeSession) |
488 exitcode = 0 |
492 exitcode = 0 |
489 except SystemExit: |
493 except SystemExit: |
490 atexit._run_exitfuncs() |
494 atexit._run_exitfuncs() |
491 excinfo = sys.exc_info() |
495 excinfo = sys.exc_info() |
492 exitcode, message = self.__extractSystemExitMessage(excinfo) |
496 exitcode, message = self.__extractSystemExitMessage(excinfo) |
493 self._dbgClient.progTerminated(exitcode, message) |
497 self._dbgClient.progTerminated(exitcode, message=message, |
|
498 closeSession=closeSession) |
494 except Exception: |
499 except Exception: |
495 excinfo = sys.exc_info() |
500 excinfo = sys.exc_info() |
496 self.user_exception(excinfo, True) |
501 self.user_exception(excinfo, True) |
497 exitcode = 242 |
502 exitcode = 242 |
498 finally: |
503 finally: |