Example #1
0
    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)
        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()
Example #2
0
    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)
        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()
Example #3
0
    def write(self, message):
        log.debug('socket -> websocket: %s' % message)
        message = message.decode('utf-8')
        if (message.startswith('BreakSet|')
                or message.startswith('BreakUnset|')):
            log.debug('Intercepted break')
            cmd, brk = message.split('|', 1)
            brk = json.loads(brk)
            if not brk['temporary']:
                del brk['temporary']
                if cmd == 'BreakSet':
                    breakpoints.add(brk)
                elif cmd == 'BreakUnset':
                    breakpoints.remove(brk)

        self.write_message(message)
Example #4
0
    def write(self, message):
        log.debug('socket -> websocket: %s' % message)
        message = message.decode('utf-8')
        if (message.startswith('BreakSet|')
                or message.startswith('BreakUnset|')):
            log.debug('Intercepted break')
            cmd, brk = message.split('|', 1)
            brk = json.loads(brk)
            if not brk['temporary']:
                del brk['temporary']
                if cmd == 'BreakSet':
                    breakpoints.add(brk)
                elif cmd == 'BreakUnset':
                    breakpoints.remove(brk)

        self.write_message(message)