howto? gdb --> AF_UNIX --> gdbserver

Rick van Rein rick@openfortress.nl
Tue Dec 22 10:15:37 GMT 2020


Hi Martin / GDB,

Turns out, I was quite right to complain about missing documentation.  I think it is useful if this would be fixed.

>> * I cannot figure out how to tell gdbserver to listen to a UNIX domain
>> socket at a given filename.  I would expect it to listen, like it does
>> for TCP sockets, but it complains that the name is missing.
>
> You can't do this with gdbserver itself, but you can wrap it with nc,
> e.g.
>
> rm $unix-domain-socket
> nc -Ul -e "gdbserver --no-startup-with-shell stdio $program-to-debug" $unix-domain-socket

Thanks, that really cleared up the problem.  You are using another flavour or netcat than the two I have :) but at least it is clear that gdbserver does not really align with gdb when it comes to UNIX domain sockets.  Surprising, but good to at least know.  I was really confused, especially because it is so surprising / unlogical.

This really is completely underdocumented, and that is a problem, I think.  The same goes for the --multi mode, which I worked out by trying, but it is not clear at all from the documentation.  I had to fiddle around to find out that it takes only one connection at a time, and so could not debug a couple of processes in parallel, in whatever way, as the --multi option might be interpreted.

>> * Using gdb with "target remote", the same thing seems to happen; it
>> seems to want a pre-existing UNIX domain socket.  This _is_ in line with
>> the TCP style of connecting.
>
> Yes, if the argument to "target remote" is an existing UNIX domain
> socket name then gdb will connect to it.

That makes sense on its own; because that it is what it does with TCP also.

-Rick


More information about the Gdb mailing list