gdbserver
Parece que você está procurando pelo gdbserver .
gdbserver is a control program for Unix-like systems, which allows you to connect your program with a remote GDB via target remote---but without linking in the usual debugging stub.
Exemplo
Na máquina de destino
You need to have a copy of the program you want to debug. gdbserver does not need your program's symbol table, so you can strip the program if necessary to save space. GDB on the host system does all the symbol handling.
target$ gdbserver host:2345 emacs foo.txt
NOTA: Você também pode anexar a processos em execução da seguinte forma:
target$ gdbserver comm --attach pid
Uma máquina host do GDB
You need an unstripped copy of your program, since GDB needs symbols and debugging information. Start up GDB as usual, using the name of the local copy of your program as the first argument. (You may also need the
--baud' option if the serial line is running at anything other than 9600bps.) After that, use target remote to establish communications with gdbserver. Its argument is either a device name (usually a serial device, like
/dev/ttyb'), or a TCP port descriptor in the form host:PORT. For example:(gdb) target remote the-target:2345
stub do GDB
Existe outro método discutido nos manuais, chamado "stub remoto". Os manuais oficiais estão localizados aqui, Documentação do GDB , no site gnu.org. Consulte o Manual do Usuário do GDB , seção 20.5, Implementando um Remote Stub , explica como usar esse recurso em vez de gdbserver
.
Este método é descrito da seguinte forma nos documentos:
The next step is to arrange for your program to use a serial port to communicate with the machine where gdb is running (the host machine). In general terms, the scheme looks like this:
Assim, você pode configurar uma porta serial no host da VM e no convidado e depurar o kernel do convidado usando esse método.