diff -r f78ee0e8f96c -r 5fa59ceba7e1 DebugClients/Python/DebugClientBase.py --- a/DebugClients/Python/DebugClientBase.py Sat Jan 26 12:44:46 2013 +0100 +++ b/DebugClients/Python/DebugClientBase.py Sun Jan 27 16:34:50 2013 +0100 @@ -555,8 +555,14 @@ self.debugMod.__dict__['__file__'] = sys.argv[0] sys.modules['__main__'] = self.debugMod - execfile(sys.argv[0], self.debugMod.__dict__) + res = 0 + try: + execfile(sys.argv[0], self.debugMod.__dict__) + except SystemExit as exc: + res = exc.code + atexit._run_exitfuncs() self.writestream.flush() + self.progTerminated(res) return if cmd == DebugProtocol.RequestCoverage: @@ -585,16 +591,20 @@ self.cover.erase() sys.modules['__main__'] = self.debugMod self.debugMod.__dict__['__file__'] = sys.argv[0] + self.running = sys.argv[0] + res = 0 self.cover.start() try: execfile(sys.argv[0], self.debugMod.__dict__) - except SystemExit: + except SystemExit as exc: + res = exc.code atexit._run_exitfuncs() self.cover.stop() self.cover.save() self.writestream.flush() + self.progTerminated(res) return - + if cmd == DebugProtocol.RequestProfile: sys.setprofile(None) import PyProfile @@ -620,9 +630,16 @@ self.prof.erase() self.debugMod.__dict__['__file__'] = sys.argv[0] sys.modules['__main__'] = self.debugMod - self.prof.run('execfile(%r)' % sys.argv[0]) + self.running = sys.argv[0] + res = 0 + try: + self.prof.run('execfile(%r)' % sys.argv[0]) + except SystemExit as exc: + res = exc.code + atexit._run_exitfuncs() self.prof.save() self.writestream.flush() + self.progTerminated(res) return if cmd == DebugProtocol.RequestShutdown: