2014-05-05 11:25:51 +02:00
|
|
|
// -*- mode:doc; -*-
|
|
|
|
// vim: set syntax=asciidoc:
|
|
|
|
|
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-12 22:20:06 +02:00
|
|
|
==== Using +gdb+ in Buildroot
|
2014-05-05 11:25:51 +02:00
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
----------------------------
|
2017-07-05 13:14:32 +02:00
|
|
|
<buildroot>/output/host/bin/<tuple>-gdb -x <buildroot>/output/staging/usr/share/buildroot/gdbinit foo
|
2014-05-05 11:25:51 +02:00
|
|
|
----------------------------
|
|
|
|
|
|
|
|
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
|
|
|
|
----------------------------
|