X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=cirros-testvm%2Fsrc-cirros%2Fbuildroot-2015.05%2Fbuild%2Fdocs%2Fmanual%2Fusing-buildroot-debugger.txt;fp=cirros-testvm%2Fsrc-cirros%2Fbuildroot-2015.05%2Fbuild%2Fdocs%2Fmanual%2Fusing-buildroot-debugger.txt;h=b5063ca94c176c1198aa44ecd2c4d0ee558c7870;hb=b0a0f15dfaa205161a7fcb20cf1b8cd4948c2ef3;hp=0000000000000000000000000000000000000000;hpb=c6ac3cd55ee2da956195eee393b0882105dfad4e;p=packages%2Ftrusty%2Fcirros-testvm.git diff --git a/cirros-testvm/src-cirros/buildroot-2015.05/build/docs/manual/using-buildroot-debugger.txt b/cirros-testvm/src-cirros/buildroot-2015.05/build/docs/manual/using-buildroot-debugger.txt new file mode 100644 index 0000000..b5063ca --- /dev/null +++ b/cirros-testvm/src-cirros/buildroot-2015.05/build/docs/manual/using-buildroot-debugger.txt @@ -0,0 +1,53 @@ +// -*- 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: + +---------------------------- +/output/host/usr/bin/-gdb -x /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 +/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 :2345 +----------------------------