This doc shows how to use LLDB to debug native binaries on Android. For a more
complete explanation, see the
[official LLDB documentation on remote debugging](https://lldb.llvm.org/use/remote.html).

# Debugging with LLDB on Android

## Prerequisites

We assume the following setup:

1. [Android NDK is installed](https://developer.android.com/ndk/downloads) and
   the `ANDROID_NDK` environment variable is set to the installation path.
1. Your Android device connected and configured for
   [`adb`](https://developer.android.com/studio/command-line/adb).
1. The Android binary of interest is already compiled and the command to run it
   (in `adb shell`) is `<your-binary> [program args...]`. This does *not* have
   to be a proper Android app with a manifest, etc.

## Running Manually

1. Push the toolchain files, including `lldb-server`, to your device:

   ```shell
   adb shell "mkdir -p /data/local/tmp/tools"
   adb push "$ANDROID_NDK"/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.6/lib/linux/aarch64/* /data/local/tmp/tools
   ```

   You may need to adjust the clang toolchain version to match the one in your
   NDK. You can find it with
   `find "$ANDROID_NDK/toolchains/llvm/prebuilt" -name lldb-server`.

1. Set up port forwarding. We are going to use port 5039 but you are free to
   pick a different one:

   ```shell
   adb forward tcp:5039 tcp:5039
   ```

1. Start an `lldb-server` in a new interactive adb shell:

   ```shell
    adb shell
    /data/local/tmp/tools/lldb-server platform --listen '*:5039' --server
   ```

1. Launch `lldb`, connect to the server and run the binary:

   ```shell
   lldb -o 'platform select remote-android' \
        -o 'platform connect connect://:5039' \
        -o 'platform shell cd /data/local/tmp'
   target create <your-binary>
   run [program args...]
   ```

   You can either use the system `lldb` or a prebuilt under `"$ANDROID_NDK"/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.6/lib/linux/<your-host-arch>`.

   Explanation: each `-o` (short for `--one-shot`) tells lldb to execute a
   command on startup. You can run those manually in the lldb shell, if you
   prefer. Then, we tell lldb which working directory to use, where to find the
   executable, and what command line arguments to use.
