def on_message(self, message): if '|' in message: cmd, data = message.split('|', 1) else: cmd, data = message, '' if cmd == 'ListSockets': for uuid in sockets.uuids: syncwebsockets.send( self.uuid, 'AddSocket', { 'uuid': uuid, 'filename': sockets.get_filename(uuid) if tornado.options.options.show_filename else '' }) elif cmd == 'ListWebsockets': for uuid in websockets.uuids: syncwebsockets.send(self.uuid, 'AddWebSocket', uuid) elif cmd == 'ListBreaks': for brk in breakpoints.get(): syncwebsockets.send(self.uuid, 'AddBreak', brk) elif cmd == 'RemoveBreak': brk = json.loads(data) breakpoints.remove(brk) # If it was here, it wasn't temporary brk['temporary'] = False sockets.broadcast('Unbreak', brk) elif cmd == 'RemoveUUID': sockets.close(data) sockets.remove(data) websockets.close(data) websockets.remove(data) elif cmd == 'ListProcesses': refresh_process(self.uuid) elif cmd == 'Pause': if int(data) == os.getpid(): log.debug('Pausing self') def self_shell(variables): # Debugging self import wdb wdb.set_trace() Process(target=self_shell, args=(globals(), )).start() else: log.debug('Pausing %s' % data) tornado.process.Subprocess(['gdb', '-p', data, '-batch'] + [ "-eval-command=call %s" % hook for hook in [ 'PyGILState_Ensure()', 'PyRun_SimpleString(' '"import wdb; wdb.set_trace(skip=1)"' ')', 'PyGILState_Release($1)', ] ]) elif cmd == 'RunFile': file_name = data def run(): from wdb import Wdb Wdb.get().run_file(file_name) Process(target=run).start() elif cmd == 'RunShell': def run(): from wdb import Wdb Wdb.get().shell() Process(target=run).start()
def on_message(self, message): if '|' in message: cmd, data = message.split('|', 1) else: cmd, data = message, '' if cmd == 'ListSockets': for uuid in sockets.uuids: syncwebsockets.send(self.uuid, 'AddSocket', { 'uuid': uuid, 'filename': sockets.get_filename( uuid) if tornado.options.options.show_filename else '' }) elif cmd == 'ListWebsockets': for uuid in websockets.uuids: syncwebsockets.send(self.uuid, 'AddWebSocket', uuid) elif cmd == 'ListBreaks': for brk in breakpoints.get(): syncwebsockets.send(self.uuid, 'AddBreak', brk) elif cmd == 'RemoveBreak': brk = json.loads(data) breakpoints.remove(brk) # If it was here, it wasn't temporary brk['temporary'] = False sockets.broadcast('Unbreak', brk) elif cmd == 'RemoveUUID': sockets.close(data) sockets.remove(data) websockets.close(data) websockets.remove(data) elif cmd == 'ListProcesses': refresh_process(self.uuid) elif cmd == 'Pause': if int(data) == os.getpid(): log.debug('Pausing self') def self_shell(variables): # Debugging self import wdb wdb.set_trace() Process(target=self_shell, args=(globals(),)).start() else: log.debug('Pausing %s' % data) tornado.process.Subprocess([ 'gdb', '-p', data, '-batch'] + [ "-eval-command=call %s" % hook for hook in [ 'PyGILState_Ensure()', 'PyRun_SimpleString(' '"import wdb; wdb.set_trace(skip=1)"' ')', 'PyGILState_Release($1)', ]]) elif cmd == 'RunFile': file_name = data def run(): from wdb import Wdb Wdb.get().run_file(file_name) Process(target=run).start() elif cmd == 'RunShell': def run(): from wdb import Wdb Wdb.get().shell() Process(target=run).start()