def _gdbserver_port(gdbserver, ssh): which = _get_which(ssh) # Process /bin/bash created; pid = 14366 # Listening on port 34816 process_created = gdbserver.recvline() gdbserver.pid = int(process_created.split()[-1], 0) listening_on = '' while 'Listening' not in listening_on: listening_on = gdbserver.recvline() port = int(listening_on.split()[-1]) # Set up port forarding for SSH if ssh: remote = ssh.connect_remote('127.0.0.1', port) listener = tubes.listen.listen(0) port = listener.lport # Disable showing GDB traffic when debugging verbosity is increased remote.level = 'error' listener.level = 'error' # Hook them up remote <> listener # Set up port forwarding for ADB elif context.os == 'android': adb.forward(port) return port
def _gdbserver_port(gdbserver, ssh): which = _get_which(ssh) # Process /bin/bash created; pid = 14366 # Listening on port 34816 process_created = gdbserver.recvline() if process_created.startswith(b'ERROR:'): raise ValueError( 'Failed to spawn process under gdbserver. gdbserver error message: %s' % process_created) try: gdbserver.pid = int(process_created.split()[-1], 0) except ValueError: log.error('gdbserver did not output its pid (maybe chmod +x?): %s', six.ensure_str(process_created)) listening_on = b'' while b'Listening' not in listening_on: listening_on = gdbserver.recvline() port = int(listening_on.split()[-1]) # Set up port forarding for SSH if ssh: remote = ssh.connect_remote('127.0.0.1', port) listener = tubes.listen.listen(0) port = listener.lport # Disable showing GDB traffic when debugging verbosity is increased remote.level = 'error' listener.level = 'error' # Hook them up remote.connect_both(listener) # Set up port forwarding for ADB elif context.os == 'android': adb.forward(port) return port