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.
