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