Before you even start building Android, Google’s instructions tell you to source the
build/envsetup.sh shell script.
This script exports a number of environment variables (that’s why you have to source it), mostly setting the
PATH to your different toolchains and to your output directories.
It also defines a number of shell functions. Among them some functions are advertised, like the well-know
lunch, that is used to configure to some extent the build system, or the grepping functions, but some are not, like
pid, which uses
adb to get the PID of a process running on the device.
Among the latter, one seems pretty useful:
gdbclient does is obviously gdb related but in fact it does more than that.
First, you run it by doing
gdbclient <binary>:<port> <process_name>
Then it sets up
adb with the
forward command so that you use it as a transport layer to your device, while it appears as (in that case) opened TCP sockets both on your machine and on the device.
Then, it attaches a
gdbserver to the process you gave as the third argument on the device.
Finally, it launches your cross-gdb on your workstation, loads the debugging symbols from the file passed as first argument, and sets up a remote debugging session. All of that through USB!
This is definitely useful, and I can’t say why Google doesn’t advertise it more, but hey, it’s there!