O Android Studio for Platform (ASfP) integra a depuração de plataforma multilíngue na guia Anexar da janela de ferramentas Depurar:
- Selecione Run > Attach to Android Process (Control+Alt+A) para anexar o depurador Java, o depurador nativo (LLDB agrupado) ou ambos a qualquer app ou processo do sistema em execução em um dispositivo físico ou virtual Cuttlefish.
- Inspecione todas as bibliotecas compartilhadas carregadas (
.so) e o ID do build ELF de oito caracteres no painel Bibliotecas antes de anexar. Os ícones de marca de seleção verificam os símbolos de depuração locais correspondentes emout/target/product/<device>/symbols. - Gerencie os pré-requisitos do dispositivo na barra de ferramentas: filtre com Mostrar processos do sistema, clique em Dispositivo com acesso root para executar
adb root(mostrando O dispositivo tem acesso root quando ativo) e clique em Ativar JDWP para ativar o JDWP em buildsuserdebug. - Defina pontos de interrupção condicionais e de exceção, confira valores de variáveis inline no editor, use Soltar frame e Depurar passo a passo inteligente e inspecione tipos estruturados de C++ e Rust no tempo de execução.
Antes de usar o depurador, crie o destino lunch para que o índice de símbolos out/target/product/<device>/symbols/.build-id local exista e faça o flash
ou inicie uma imagem de dispositivo correspondente.
Depuração dupla de Java e nativa
Para depurar um aplicativo Java ou Kotlin, um app do sistema (como
com.android.messaging, Configurações ou SystemUI) ou um processo que chama código JNI
e C++ ou Rust, siga estas etapas:
- Defina pontos de interrupção nos arquivos de origem Java, Kotlin, C, C++ ou Rust.
- Selecione Run > Attach to Android Process (Control+Alt+A). O ASfP abre uma guia Anexar fixada na janela de ferramentas Depurar.
- Selecione o dispositivo de destino no menu suspenso. Se o JDWP não estiver
ativado em um build
userdebug, clique em Ativar JDWP. O ASfP definepersist.debug.dalvik.vm.jdwp.enabled=1e reinicia o dispositivo. Quando ativo, o botão mostra JDWP enabled com uma ação de clique com o botão direito do mouse Disable JDWP. - Selecione o processo de destino na tabela. Os processos Java e ART mostram um ícone de xícara de café.
- Na parte de baixo da guia Anexar, selecione Depurador Java, Depurador nativo ou ambos. Ao selecionar os dois, duas guias vinculadas são abertas na janela de ferramentas Debug:
<process> (<pid>)para LLDB integrado e<process> (<pid>)-jdwppara Java. Os ciclos de vida estão vinculados, então interromper uma sessão interrompe as duas. - Clique em Anexar e interaja com o app no dispositivo para atingir os pontos de interrupção.

Depuração de processos do sistema (C e C++) e verificação de símbolos
Para depurar daemons do sistema, HALs ou serviços do sistema (como
android.hardware.bluetooth-service.cuttlefish, surfaceflinger ou
audioserver), siga estas etapas:
- Abra Executar > Anexar ao processo do Android (Control+Alt+A). Se a barra de ferramentas mostrar Root Device, clique nela para que o ASfP execute
adb roote mostre Device is rooted. - Selecione Mostrar processos do sistema na barra de ferramentas superior e filtre o processo de destino.
- Verifique os símbolos de depuração locais no painel "Bibliotecas": ao selecionar um processo,
a tabela Bibliotecas é preenchida com todas as bibliotecas compartilhadas ELF (
.so) carregadas no processo e os oito primeiros caracteres hexadecimais do ID de build do ELF. O ASfP compara cada ID de build comout/target/product/<device>/symbols(symbols/.build-idé necessário para resolver bibliotecas dentro de APEXes):- As bibliotecas verificadas mostram um ícone de verificação. Aponte para qualquer linha resolvida
para visualizar o caminho completo do símbolo local
.debug. - As bibliotecas não resolvidas sem símbolos locais correspondentes mostram um ícone de aviso.
- As bibliotecas verificadas mostram um ícone de verificação. Aponte para qualquer linha resolvida
para visualizar o caminho completo do símbolo local
- Detecção de processos não Java: quando você seleciona um processo C++ ou Rust
(marcado com um ícone de hexágono
C), o ASfP oculta o depurador Java e mostra A depuração Java não está disponível, não é um processo Java., mantendo o depurador nativo marcado. - Defina pontos de interrupção nos arquivos de origem C, C++ ou Rust, clique em Anexar e acionar o caminho do código no dispositivo.

Depurar código Rust
O ASfP depura o código da plataforma Rust com o mesmo depurador LLDB integrado usado para C
e C++. Não é necessário um adaptador externo nem uma configuração manual do servidor: o ASfP usa
lldb-dap do conjunto de ferramentas agrupado e carrega automaticamente os
pretty-printers do Rust dos pré-compilados do AOSP para que tipos padrão como String, Vec,
HashMap e Option mostrem valores estruturados no painel Variáveis.
Anexar a um processo Rust em execução em um dispositivo
Siga as etapas em Depuração de processos do sistema (C e C++): abra Executar > Anexar ao processo do Android, verifique se O dispositivo está com acesso root e se os símbolos locais mostram uma marca de seleção no painel Bibliotecas, mantenha Depurador nativo marcado e clique em Anexar. Os frames de pilha Rust e C ou C++ aparecem juntos na mesma sessão de depuração.
Depurar um módulo rust_test ou rust_test_host
- Abra o arquivo
Android.bpdeclarando uma metarust_testourust_test_hoste clique no ícone Executar na barra ao lado do tipo de módulo. - Selecione Debug '<ModuleName>'. O ASfP cria o destino, inicia o binário de teste no LLDB na máquina host ou no dispositivo conectado e faz uma pausa nos pontos de interrupção do Rust.
- Para depurar uma única função de teste ou personalizar comandos de inicialização do LLDB, abra Run > Edit Configurations, selecione a configuração Soong Test gerada e defina Method ou expanda as opções do Debugger. Para mais informações sobre as opções de configuração do Soong Test, consulte Testar o código da plataforma com o atest.
