Objetivo
Este treinamento visa capacitar o participante a depurar e resolver problemas em sistemas com Linux embarcado.
Conteúdo programático
- Introdução à depuração de software: introdução à depuração de software, o processo de depuração de software, principais tipos de problemas, principais mecanismos de depuração, processos e técnicas de depuração e análise de performance em sistemas Linux.
- Introdução ao GDB: depurando aplicações com o GDB, comandos básicos do GDB, controle de execução, breakpoints, watchpoints, catchpoints, imprimindo expressões, exibindo memória, backtrace do stack, modo TUI, integração com DDD e Eclipse.
- Depuração do kernel Linux: coletando informações de sistemas de arquivos virtuais do kernel (procfs, sysfs, debugfs), depurando o kernel Linux com ferramentas e técnicas de logging (printk, dynamic debug), , análise de mensagens de crash do kernel (oops e panic) com as ferramentas addr2line e GDB, depurando módulos do kernel, pstore, kdump.
- Mecanismos de tracing do kernel Linux: tracing estático e tracing dinâmico, ferramentas e técnicas de tracing (ftrace, trace-cmd, kernelshark, systemtap), introdução ao ftrace, tracing de funções, tempos de latência e consumo de stack, introdução ao trace-cmd, visualização gráfica do tracing com a ferramenta kernelshark.
- Depuração interativa do kernel Linux: depuração interativa do kernel Linux com o GDB (kgdb, gdbclient e agent-proxy), GDB e otimização de código, front-end de depuração KDB, depuração no nível do hardware com JTAG.
- Frameworks de depuração do kernel Linux: frameworks de depuração do kernel Linux, menu de configuração “Kernel Hacking”, detecção de vazamento de memória no kernel, kmemleak, magic sysrq key, detecção de travamentos no kernel.
- Depuração de aplicações Linux: ferramentas e técnicas de logging na camada de usuário, análise de crashes e core dump em aplicações e bibliotecas Linux, GDB e bibliotecas dinâmicas.
- Tracing em aplicações Linux: ferramentas de tracing de aplicações em espaço de usuário, strace, ltrace, etrace, uprobe, perf, systemtap, lttng-ust.
- Depuração interativa de aplicações: depuração remota de aplicações Linux com o gdbserver, GDB e bibliotecas dinâmicas, GDB e otimização de código, depuração de aplicações multithread com o GDB.
- Depuração do uso de memória de aplicações: depurando o uso de memória em aplicações Linux, ferramentas de análise do uso de memória (free, procrank, pmap), depurando e identificando vazamentos de memória com valgrind, mtrace, memwatch e dmalloc.
- Análise de performance de sistemas Linux: análise de performance em sistemas Linux, análise de consumo de CPU (uptime, cpuload, top, schedtop, time), análise de consumo de memória (free, procrank, pmap), análise de performance com o perf, a ferramenta oprofile, analisando a performance de aplicações com o strace e o ltrace, analisando a performance de aplicações com o gprof.
- 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, desenvolvedores e líderes de equipes de desenvolvimento de software para sistemas embarcados.
Terminal de comandos (ls, cp, mv, cat, grep, find, vi, etc), conhecimentos intermediários nas linguagens C e C++, compilação de aplicações com make e gcc, arquitetura e componentes de um sistema com Linux embarcado (toolchain, bootloader, kernel, rootfs), configuração e compilação do kernel Linux.
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.
Os exercícios do treinamento são realizados no módulo Colibri i.MX6 da Toradex (ARM Cortex-A9), com a placa-base Aster e uma placa de expansão com diversos periféricos, incluindo leds, botões, trimpot, buzzer, UART, sensor de temperatura, expansor de GPIO, display de 7 segmentos e acelerômetro. O kit de desenvolvimento é emprestado aos alunos para a execução das atividades práticas. Se necessário, e conforme a necessidade da empresa contratante, o treinamento pode ser realizado em uma outra plataforma de desenvolvimento.
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.
Devido à necessidade do uso de um kit de desenvolvimento para a execução das atividades práticas, no momento este treinamento não pode ser realizado de forma online.
Galeria de fotos
Algumas fotos dos treinamentos já realizados: