buildroot/docs/manual/using-buildroot-debugger.txt
Thomas De Schampheleire 569db40574 manual: high-level restructuring
The structure of the buildroot manual is not always clear. There is a large
number of chapters, and some chapters seem to overlap. The distinction
between general usage and developer information is not always clear.

This patch restructures the manual into four large parts:
- getting started
- user guide
- developer guide
- appendix

Except for the names of these parts, the section names are not yet changed.
Content-wise there are no changes yet either. This will be handled in
subsequent patches.

In order to achieve the introduction of a new level 'parts' above
'chapters', the section indicators (=, ==, ===, ...) of several sections
have to be moved one level down. Additionally, the leveloffset indication to
asciidoc has to be removed. Finally, to maintain more or less the same level
of detail in the table of contents, the toc.section.depth attribute is
reduced as well. Note that for some sections, less detail is visible now.

Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-08-17 21:09:52 +02:00

54 lines
1.9 KiB
Plaintext

// -*- 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/usr/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
----------------------------