540 |
540 |
541 self.mainThread.tracePython = False |
541 self.mainThread.tracePython = False |
542 |
542 |
543 self.debugMod.__dict__['__file__'] = sys.argv[0] |
543 self.debugMod.__dict__['__file__'] = sys.argv[0] |
544 sys.modules['__main__'] = self.debugMod |
544 sys.modules['__main__'] = self.debugMod |
545 exec(open(sys.argv[0], encoding=self.__coding).read(), |
545 res = 0 |
546 self.debugMod.__dict__) |
546 try: |
|
547 exec(open(sys.argv[0], encoding=self.__coding).read(), |
|
548 self.debugMod.__dict__) |
|
549 except SystemExit as exc: |
|
550 res = exc.code |
|
551 atexit._run_exitfuncs() |
547 self.writestream.flush() |
552 self.writestream.flush() |
|
553 self.progTerminated(res) |
548 return |
554 return |
549 |
555 |
550 if cmd == DebugProtocol.RequestProfile: |
556 if cmd == DebugProtocol.RequestProfile: |
551 sys.setprofile(None) |
557 sys.setprofile(None) |
552 import PyProfile |
558 import PyProfile |
576 try: |
582 try: |
577 script = fp.read() |
583 script = fp.read() |
578 finally: |
584 finally: |
579 fp.close() |
585 fp.close() |
580 if script: |
586 if script: |
581 self.prof.run("exec({0!r}\n)".format(script)) |
587 if not script.endswith('\n'): |
|
588 script += '\n' |
|
589 self.running = sys.argv[0] |
|
590 res = 0 |
|
591 try: |
|
592 self.prof.run(script) |
|
593 except SystemExit as exc: |
|
594 res = exc.code |
|
595 atexit._run_exitfuncs() |
582 self.prof.save() |
596 self.prof.save() |
583 self.writestream.flush() |
597 self.writestream.flush() |
|
598 self.progTerminated(res) |
584 return |
599 return |
585 |
600 |
586 if cmd == DebugProtocol.RequestCoverage: |
601 if cmd == DebugProtocol.RequestCoverage: |
587 from coverage import coverage |
602 from coverage import coverage |
588 sys.argv = [] |
603 sys.argv = [] |
616 fp.close() |
631 fp.close() |
617 if script: |
632 if script: |
618 if not script.endswith('\n'): |
633 if not script.endswith('\n'): |
619 script += '\n' |
634 script += '\n' |
620 code = compile(script, sys.argv[0], 'exec') |
635 code = compile(script, sys.argv[0], 'exec') |
|
636 self.running = sys.argv[0] |
|
637 res = 0 |
621 self.cover.start() |
638 self.cover.start() |
622 try: |
639 try: |
623 exec(code, self.debugMod.__dict__) |
640 exec(code, self.debugMod.__dict__) |
624 except SystemExit: |
641 except SystemExit as exc: |
|
642 res = exc.code |
625 atexit._run_exitfuncs() |
643 atexit._run_exitfuncs() |
626 self.cover.stop() |
644 self.cover.stop() |
627 self.cover.save() |
645 self.cover.save() |
628 self.writestream.flush() |
646 self.writestream.flush() |
|
647 self.progTerminated(res) |
629 return |
648 return |
630 |
649 |
631 if cmd == DebugProtocol.RequestShutdown: |
650 if cmd == DebugProtocol.RequestShutdown: |
632 self.sessionClose() |
651 self.sessionClose() |
633 return |
652 return |