Android Studio for Platform (ASfP) integra la depuración de la plataforma en varios idiomas en la pestaña Attach de la ventana de herramientas Debug:
- Selecciona Run > Attach to Android Process (Control+Alt+A) para adjuntar el depurador de Java, el depurador nativo (LLDB incluido) o ambos a cualquier app o proceso del sistema en ejecución en un dispositivo físico o en un dispositivo virtual de Cuttlefish.
- Inspecciona cada biblioteca compartida cargada (
.so) y su ID de compilación ELF de ocho caracteres en el panel Libraries antes de adjuntarla. Los íconos de marca de verificación verifican que coincidan los símbolos de depuración locales enout/target/product/<device>/symbols. - Administra los requisitos previos del dispositivo desde la barra de herramientas: filtra con Mostrar procesos del sistema, haz clic en Dispositivo con permisos de administrador para ejecutar
adb root(se mostrará El dispositivo tiene permisos de administrador cuando esté activo) y haz clic en Habilitar JDWP para habilitar JDWP en compilaciones deuserdebug. - Establece puntos de interrupción condicionales y de excepción, consulta los valores de las variables intercaladas en el editor, usa Drop Frame y Step Into inteligentes, y, además, inspecciona los tipos estructurados de C++ y Rust en el tiempo de ejecución.
Antes de usar el depurador, compila tu destino lunch para que exista el índice de símbolos out/target/product/<device>/symbols/.build-id local y, luego, escribe en la memoria flash o inicia una imagen de dispositivo coincidente.
Depuración de Java y depuración dual de Java y código nativo
Para depurar una aplicación de Java o Kotlin, una app del sistema (como com.android.messaging, Configuración o SystemUI) o un proceso que llama a código de JNI y C++ o Rust, completa los siguientes pasos:
- Establece puntos de interrupción en tus archivos fuente de Java, Kotlin, C, C++ o Rust.
- Selecciona Run > Attach to Android Process (Control+Alt+A). ASfP abre una pestaña Adjuntar fijada dentro de la ventana de herramientas Depurar.
- Selecciona tu dispositivo de destino en el menú desplegable de dispositivos. Si JDWP no está habilitado en una compilación de
userdebug, haz clic en Habilitar JDWP. ASfP establecepersist.debug.dalvik.vm.jdwp.enabled=1y reinicia el dispositivo. Cuando está activo, el botón muestra JDWP habilitado con una acción de hacer clic con el botón derecho Inhabilitar JDWP. - Selecciona el proceso de destino en la tabla (los procesos de Java y ART muestran un ícono de taza de café).
- En la parte inferior de la pestaña Adjuntar, selecciona Depurador de Java, Depurador nativo o ambos. Si seleccionas ambas, se abrirán dos pestañas vinculadas en la ventana de herramientas Debug:
<process> (<pid>)para LLDB integrado y<process> (<pid>)-jdwppara Java. Sus ciclos de vida están vinculados, por lo que detener cualquiera de las sesiones detiene ambas. - Haz clic en Adjuntar e interactúa con la app en tu dispositivo para alcanzar los puntos de interrupción.

Depuración de procesos del sistema (C y C++) y verificación de símbolos
Para depurar daemons del sistema, HAL o servicios del sistema (como android.hardware.bluetooth-service.cuttlefish, surfaceflinger o audioserver), completa los siguientes pasos:
- Abre Ejecutar > Adjuntar al proceso de Android (Control+Alt+A). Si la barra de herramientas muestra Root Device, haz clic en ella para que ASfP ejecute
adb rooty muestre Device is rooted. - Selecciona Mostrar procesos del sistema en la barra de herramientas superior y filtra el proceso objetivo.
- Verifica los símbolos de depuración locales en el panel Libraries: Cuando seleccionas un proceso, se completa la tabla Libraries con cada biblioteca compartida ELF (
.so) cargada en el proceso y los primeros ocho caracteres hexadecimales de su ID de compilación ELF. ASfP compara cada ID de compilación conout/target/product/<device>/symbols(se requieresymbols/.build-idpara resolver bibliotecas dentro de APEX):- Las bibliotecas verificadas muestran un ícono de marca de verificación. Apunta a cualquier fila resuelta para obtener una vista previa de la ruta de acceso completa al símbolo
.debuglocal. - Las bibliotecas sin resolver que no tienen símbolos locales coincidentes muestran un ícono de advertencia.
- Las bibliotecas verificadas muestran un ícono de marca de verificación. Apunta a cualquier fila resuelta para obtener una vista previa de la ruta de acceso completa al símbolo
- Detección de procesos que no son de Java: Cuando seleccionas un proceso de C++ o Rust (marcado con un ícono de hexágono
C), ASfP oculta Java debugger y muestra Java debugging unavailable, not a Java process., mientras mantiene marcada la opción Native debugger. - Establece puntos de interrupción en tus archivos fuente de C, C++ o Rust, haz clic en Adjuntar y activa las instrucciones de código en el dispositivo.

Depura código de Rust
ASfP depura el código de la plataforma Rust con el mismo depurador LLDB integrado que se usa para C y C++. No se requiere ningún adaptador externo ni configuración manual del servidor: ASfP usa lldb-dap de su cadena de herramientas incluida y carga automáticamente los Pretty Printers de Rust desde tus compilaciones previas de AOSP para que los tipos estándar, como String, Vec, HashMap y Option, muestren valores estructurados en el panel Variables.
Cómo adjuntar el depurador a un proceso de Rust en ejecución en un dispositivo
Sigue los pasos que se indican en Depuración de procesos del sistema (C y C++): Abre Run > Attach to Android Process, verifica que Device is rooted y que los símbolos locales muestren una marca de verificación en el panel Libraries, mantén marcada la opción Native debugger y haz clic en Attach. Los marcos de pila de Rust y C o C++ aparecen juntos en la misma sesión de depuración.
Depura un módulo rust_test o rust_test_host
- Abre el archivo
Android.bpque declara un destinorust_testorust_test_hosty haz clic en el ícono Ejecutar en el margen junto al tipo de módulo. - Selecciona Debug '<ModuleName>'. ASfP compila el destino, inicia el archivo binario de prueba en LLDB en tu máquina host o dispositivo conectado y se detiene en tus puntos de interrupción de Rust.
- Para depurar una sola función de prueba o personalizar los comandos de inicio de LLDB, abre Run > Edit Configurations, selecciona la configuración Soong Test generada y establece Method o expande las opciones de Debugger. Para obtener más información sobre las opciones de configuración de Soong Test, consulta Prueba el código de la plataforma con atest.
