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