@@ -139,6 +139,7 @@ class GdbCrossConfig(DebuggerCrossConfig):
gdbinit / gdb wrapper scripts used by ide=none as well as the
target-side tmp/pid/log paths consumed by the gdbserver start command.
"""
+ DEBUG_SERVER_NAME = "gdbserver"
def __init__(self, image_recipe, modified_recipe, binary,
default_mode=DebuggerServerModes.MULTI):
@@ -193,14 +194,13 @@ class GdbCrossConfig(DebuggerCrossConfig):
else:
raise DevtoolError("Cannot use gdbserver attach mode for binary %s. No PID found." % self.binary.binary_path)
elif server_mode == DebuggerServerModes.MULTI:
- hex_port = "%04X" % self.debug_server_port
- gdbserver_cmd_start = "grep -q :%s /proc/net/tcp /proc/net/tcp6 2>/dev/null && exit 0; " % hex_port
+ gdbserver_cmd_start = self._target_tcp_port_check_cmd() + " && exit 0; "
gdbserver_cmd_start += "mkdir -p %s; " % self._gdbserver_tmp_dir(server_mode)
- gdbserver_cmd_start += "%s --multi :%s > %s 2>&1 & " % (
- self.debugger_cross.debug_server_path, self.debug_server_port, self._gdbserver_log_file(server_mode))
- gdbserver_cmd_start += "echo \\$! > %s; " % self._gdbserver_pid_file(server_mode)
- gdbserver_cmd_start += "_w=0; while ! grep -q :%s /proc/net/tcp /proc/net/tcp6 2>/dev/null; " % hex_port
- gdbserver_cmd_start += "do _w=\\$((_w+1)); [ \\$_w -lt 100 ] || exit 1; sleep 0.1; done;"
+ gdbserver_cmd_start += "%s --multi :%s > %s 2>&1 & _gdbserver_pid=\\$!; " % (
+ self.debugger_cross.debug_server_path, self.debug_server_port,
+ self._gdbserver_log_file(server_mode))
+ gdbserver_cmd_start += "echo \\$_gdbserver_pid > %s; " % self._gdbserver_pid_file(server_mode)
+ gdbserver_cmd_start += self._target_wait_for_tcp_port_cmd("gdbserver_pid")
else:
raise DevtoolError("Unsupported gdbserver mode: %s" % server_mode)
return "\"/bin/sh -c '" + gdbserver_cmd_start + "'\""