// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

==== Using +gdb+ in Buildroot

Buildroot allows to do cross-debugging, where the debugger runs on the
build machine and communicates with +gdbserver+ on the target to
control the execution of the program.

To achieve this:

* If you are using an _internal toolchain_ (built by Buildroot), you
  must enable +BR2_PACKAGE_HOST_GDB+, +BR2_PACKAGE_GDB+ and
  +BR2_PACKAGE_GDB_SERVER+. This ensures that both the cross gdb and
  gdbserver get built, and that gdbserver gets installed to your target.

* If you are using an _external toolchain_, you should enable
  +BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY+, which will copy the
  gdbserver included with the external toolchain to the target. If your
  external toolchain does not have a cross gdb or gdbserver, it is also
  possible to let Buildroot build them, by enabling the same options as
  for the _internal toolchain backend_.

Now, to start debugging a program called +foo+, you should run on the
target:

----------------------------
gdbserver :2345 foo
----------------------------

This will cause +gdbserver+ to listen on TCP port 2345 for a connection
from the cross gdb.

Then, on the host, you should start the cross gdb using the following
command line:

----------------------------
<buildroot>/output/host/bin/<tuple>-gdb -x <buildroot>/output/staging/usr/share/buildroot/gdbinit foo
----------------------------

Of course, +foo+ must be available in the current directory, built
with debugging symbols. Typically you start this command from the
directory where +foo+ is built (and not from +output/target/+ as the
binaries in that directory are stripped).

The +<buildroot>/output/staging/usr/share/buildroot/gdbinit+ file will tell the
cross gdb where to find the libraries of the target.

Finally, to connect to the target from the cross gdb:

----------------------------
(gdb) target remote <target ip address>:2345
----------------------------
