Android Studio for Platform (ASfP) fornisce un potente debugger che ti consente di:
- Seleziona un dispositivo su cui eseguire il debug.
- Imposta punti di interruzione nel codice Java, Kotlin, C/C++ e Rust.
- Esamina le variabili e valuta le espressioni in fase di runtime.
Prima di utilizzare il debugger, devi trasferire la build su un dispositivo o un emulatore.
Debug del processo dell'app (Java/Kotlin)
Per eseguire il debug di un processo di applicazione Java o Kotlin:
Imposta i punti di interruzione nel codice Java o Kotlin all'interno di ASfP.
Seleziona Esegui > Collega debugger al processo Android dal menu.
Nella finestra di dialogo Scegli processo, assicurati che Tipo di debug sia impostato su Solo Java.
Seleziona il tuo dispositivo dall'elenco.
Scegli la procedura di applicazione specifica di cui vuoi eseguire il debug.
Fai clic su OK.
Interagisci con l'applicazione sul tuo dispositivo per raggiungere i punti di interruzione.
Debug del processo di sistema (C/C++)
Per eseguire il debug di un processo di sistema scritto in C o C++:
Verifica che sia in esecuzione un solo dispositivo o emulatore.
Apri un terminale ed esegui
adb rootdalla radice del checkout AOSP:bash adb root
Imposta punti di interruzione nel codice C/C++ all'interno di ASfP.
Seleziona Esegui > Collega debugger al processo Android dal menu.
Nella finestra di dialogo Scegli processo, imposta Tipo di debug su Solo nativo o Doppio (Java + nativo).
Seleziona la casella Mostra tutti i processi per visualizzare i processi di sistema.
Seleziona il tuo dispositivo dall'elenco.
Scegli il processo di sistema specifico di cui vuoi eseguire il debug (ad esempio
surfaceflingerosystem_server).Fai clic su OK.
Interagisci con il dispositivo per raggiungere i punti di interruzione.
Debug di Rust
ASfP supporta il debug di Rust utilizzando il protocollo Debug Adapter Protocol (DAP) con LLDB. Questa sezione descrive come configurare CodeLLDB come server di adattamento del debug ed eseguire il debug del codice Rust sull'host e su un dispositivo Android.
Configurare CodeLLDB come server di adattatore di debug
Crea una nuova configurazione di esecuzione/debug Debug Adapter Protocol:
- Seleziona Esegui > Modifica configurazioni dal menu.
- Fai clic sul pulsante +.
- Seleziona Debug Adapter Protocol.
Nella scheda Server, fai clic su Crea un nuovo server.
Nella finestra di dialogo appena aperta, fai clic su Scegli modello e seleziona CodeLLDB dall'elenco.
Dopo aver selezionato il modello CodeLLDB, il nuovo server viene aggiunto con una configurazione predefinita.
- Attiva la traccia dettagliata selezionando Dettagliata nel menu a discesa Traccia.
- Aggiungi una variabile di ambiente che specifichi il percorso di
lldb-servernei prebuilt delle origini Android:
LLDB_DEBUGSERVER_PATH=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/runtimes_ndk_cxx/x86_64/lldb-server ``` Replace `REPO_ROOT` with the absolute path to your Android source checkout. To find `CLANG_VERSION`, run the `get_clang_version.py` script from the root of your Android source tree: ```bash ./build/soong/scripts/get_clang_version.py- Non modificare la sezione
<<insert base directory>>.
Eseguire il debug dei file binari Rust sull'host
- Apri la scheda Configurazione nella configurazione Esegui/Debug del protocollo di adattamento del debugger.
- Seleziona Avvia come Modalità di debug.
- Aggiorna la directory di lavoro e seleziona il file binario che vuoi debuggare.
- Fai clic su Ok per salvare la configurazione.
- Avvia la sessione di debug facendo clic sull'icona Debug accanto alla configurazione.
La prima volta che esegui questo comando, CodeLLDB viene scaricato. Dovresti visualizzare le tracce DAP nella console. I punti di interruzione impostati nel codice Rust devono essere raggiunti come previsto.
Eseguire il debug dei file binari Rust su un dispositivo Android (modalità di collegamento)
Trova il PID:identifica l'ID processo (PID) dell'applicazione che vuoi debug sul dispositivo Android.
Avvia lldb-server sul dispositivo: dalla radice del checkout dell'albero delle origini Android, esegui lo script
lldbclient.py, sostituendo<PID>con l'ID processo:lldbclient.py --setup-forwarding vscode-lldb -p <PID>Questo script esegue il push del
lldb-servercorretto sul dispositivo, lo avvia, configura l'inoltro delle porte (porta host 5039 al dispositivo) e restituisce la configurazione JSON DAP necessaria per i passaggi successivi. Tieni aperto questo terminale.Avvia l'adattatore di debug CodeLLDB sull'host:
- Vai alla directory dell'estensione CodeLLDB (impostazione predefinita:
~/.lsp4ij/dap/codelldb/extension/adapter). - Imposta le variabili di ambiente richieste e avvia il server dell'adattatore, sostituendo
REPO_ROOTeCLANG_VERSIONcome determinato nella configurazione del server:
# Sets PYTHONHOME env variable export PYTHONHOME=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3 # Tell the dynamic linker where to find python libs export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3/lib # Starts the CodeLLDB Debugger Adapter server on port 1234 ./codelldb --liblldb REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/lib/liblldb.so --port 1234- Vai alla directory dell'estensione CodeLLDB (impostazione predefinita:
Configura il client DAP ASfP:
- Torna alla configurazione di esecuzione/debug del protocollo di adattatore di debug in ASfP.
- Seleziona la scheda Configurazione.
- Imposta Modalità debug su Collega.
- Imposta Indirizzo su
localhost. - Imposta Porta su
1234. - Incolla l'output JSON del comando
lldbclient.py(passaggio 2) nel campo Parametri DAP (JSON).
Fai clic su Debug per avviare la sessione di debug.
Risoluzione dei problemi
- Se visualizzi l'errore
error: Connection shut down by remote side while waiting for reply to initial handshake packet, termina la sessione di debug corrente e riavvialldb-serversul dispositivo e l'adattatore CodeLLDB sull'host.