+
+ def execute_in_frame(self, frame_message, command):
+ frame = self.message_frame_dict[frame_message]
+ output = cStringIO.StringIO()
+ out = sys.stdout
+ err = sys.stderr
+ sys.stdout = output
+ sys.stderr = output
+ try:
+ code = compile(command, '<string>', 'single')
+ exec code in frame.f_globals, frame.f_locals
+ return output.getvalue()
+ sys.stdout = out
+ sys.stderr = err
+ except:
+ sys.stdout = out
+ sys.stderr = err
+
+ tp, val, tb = sys.exc_info()
+ output = cStringIO.StringIO()
+ traceback.print_exception(tp, val, tb, file=output)
+ return output.getvalue()
+