Objetivo
Este treinamento visa capacitar o participante no uso de técnicas e ferramentas de depuração do sistema operacional Android.
Conteúdo programático
- Introdução à depuração de software: o processo de depuração passo-a-passo, a importância de entender o problema e identificar o passos para reproduzí-lo, os 5 tipos de problemas (crash, travamento, lógica/implementação, vazamento de recurso, performance), as principais técnicas e ferramentas de depuração (conhecimento, análise de logs, tracing, depuração interativa, frameworks de depuração), ambiente de desenvolvimento.
- Introdução ao LLDB: o projeto LLVM e o LLDB, iniciando a depuração com o LLDB, linha de comandos do LLDB, controlando a execução, trabalhando com breakpoints e watchpoints, imprimindo variáveis e a pilha reversa de chamada de função (stack backtrace), integração com o Visual Studio Code, dicas e referências.
- Depuração da camada nativa: introdução à camada nativa do Android, gerenciamento de logs em sistemas Linux, gerenciamento de logs no Android, logd (log daemon) e logcat, análise de core dump no Android, análise de tombstones, resolvendo símbolos com addr2line e LLDB, o script development/scripts/stack, programa debuggerd, ferramenta crasher, proteções no código (FORTIFY, -fstack-protector, AddressSanitizer, etc).
- Tracing da camada nativa: vantagens do uso de ferramentas de tracing, introdução ao strace, a ferramenta ltrace, rastreando o kernel com ftrace, instrumentando o Android com atrace e systrace, rastreando código em espaço de usuário com uprobe.
- Depuração interativa da camada nativa: depurando aplicações nativas no Android com o LLDB, arquitetura de depuração remota, depurando uma aplicação em execução, carregando símbolos no LLDB, otimizações de compilação, o script lldbclient.py, depurando crashes com o LLDB, depurando aplicações multithread, integrando e depurando aplicações nativas no Android com o Visual Studio Code.
- Depuração do uso de memória na camada nativa: principais erros relacionados ao uso de memória (acesso inválido, buffer overflow, use after free, double free, vazamento de memória, etc), introdução ao vazamento de memória, coletando informações sobre o uso de memória (free, vmstat, top, procrank, librank, pmap, showmap, dumpsys, etc), instrumentando o uso de memória com Malloc Debug, utilizando a biblioteca de detecção de vazamento de memória libmemunreachable, identificando vazamentos de memória com heapprofd e Perfetto, implementando rotinas gancho de alocação de memória com Malloc Hooks.
- Depuração do framework: introdução ao framework do Android, técnicas e ferramentas de depuração do framework, depurando o framework através de mensagens de log, os buffers system e events, depurando o framework com a ferramenta dumpsys, coletando informações de depuração através de bugreports, ferramentas de linha de comando úteis para depuração (am, pm, wm, input, cmd, service, etc), analisando crashes em código Java/Kotlin, analisando erros de ANR, arquitetura de depuração interativa na máquina virtual ART, depurando serviços do framework e aplicações com o Android Studio, gerando os arquivos de projeto do Android Studio com o script aidegen, introdução ao Android Studio for Platform (ASfP), menu “Developer options” e aplicação “Dev Tools”.
- Análise de performance: introdução a problemas de performance, definição de tracing e profiling, técnicas e ferramentas de análise de performance, a ferramenta systrace, o menu “System Tracing”, o framework de análise de performance Perfetto, profiling de CPU, analisando a performance com a ferramenta simpleperf, profiling de CPU com o Perfetto, profiling de memória, inspecionando o uso de memória com o dumpsys, instrumentando o uso de memória com a ferramenta heapprofd, análise de consumo de energia, coletando informações sobre o consumo de bateria com o serviço batterystats, a ferramenta Battery Historian, a funcionalidade Power Profiler do Android Studio, análise de tempo de boot, bootchart, analisando o tempo de boot com o simpleperf, dicas sobre profiling de aplicações Android.
- Considerações finais: links e recursos adicionais, recomendações de livros, dúvidas e comentários finais, encerramento.
Para mais detalhes sobre o conteúdo, você pode consultar a agenda e os slides do treinamento.
Informações adicionais
Estudantes, engenheiros e desenvolvedores interessados no estudo de técnicas e ferramentas de depuração do sistema operacional Android.
Usuário de distribuições GNU/Linux, terminal de comandos (ls, cp, mv, cat, grep, find, vi, tar, etc), conhecimentos intermediários nas linguagens C, C++ e Java, arquitetura e componentes do sistema operacional Android, AOSP e sistema de build do Android.
O material de estudo é composto pelos slides das apresentações, o livro de atividades e exercícios, os guias de referência e documentos de estudo adicionais. Todo o material será fornecido de forma eletrônica no início do treinamento.
Este treinamento não requer nenhum kit de desenvolvimento ou hardware adicional. Para a execução dos exercícios, é utilizado por padrão o emulador do Android. Se necessário, e conforme a necessidade da empresa contratante, o treinamento pode ser portado para qualquer plataforma de hardware com suporte ao Android.
O treinamento pode ser apresentado nos seguintes idiomas: Português brasileiro e Inglês.
Se você planeja capacitar a sua equipe, considere um treinamento na sua empresa. Nos treinamentos in-company, a empresa contratante é responsável por fornecer os recursos necessários para a realização do treinamento, incluindo sala, projetor e máquinas de desenvolvimento para os alunos. Esse modelo traz grande economia para a empresa, já que o custo do transporte e estadia de vários funcionários é reduzido apenas ao do instrutor. Caso a empresa contratante tenha alguma necessidade específica, podemos estudar a criação de um conteúdo programático especial, como preparar o treinamento para uma plataforma de hardware específica ou desenvolver algum conteúdo adicional. Não hesite em entrar em contato por e-mail ou pela página de contato .
Os treinamentos em turmas abertas são realizados em um ambiente agradável, com um laboratório devidamente equipado e acesso à Internet. As aulas são normalmente ministradas em período integral, com uma parada para o almoço e um coffee-break pela manhã. Caso tenha interesse em participar de um treinamento mas não exista uma turma disponível, envie uma mensagem pela página de contato que avisamos assim que uma nova turma for aberta.
Este treinamento pode ser realizado de forma online. Os treinamentos online são apresentados ao vivo em uma plataforma de reunião virtual como o Google Meet ou o Zoom.
Galeria de fotos
Algumas fotos dos treinamentos já realizados: