SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Embedded Labworks
Por Sergio Prado. São Paulo, Setembro de 2020
® Copyright Embedded Labworks 2004-2020. All rights reserved.
Webinar Embarcados
Debugging em Linux embarcado
Embedded Labworks
$ WHOAMI
✗ Mais de 20 anos de experiência em desenvolvimento de software para sistemas embarcados,
atuando principalmente em projetos com Linux embarcado, Android embarcado e sistemas
operacionais de tempo real.
✗ Sócio da Embedded Labworks, onde atua com consultoria, treinamento e desenvolvimento de
software para sistemas embarcados.
https://e-labworks.com
✗ Team lead na Toradex, responsável pelo time do TorizonCore, uma distribuição Linux baseada
em containers para sistemas embarcados.
https://toradex.com
✗ Ativo na comunidade de sistemas embarcados e colaborador de alguns projetos de software
livre (Buildroot, Yocto Project, Linux).
https://embeddedbits.org
https://sergioprado.org
Embedded Labworks
AGENDA DO WEBINAR
✗ Introdução a depuração de software.
✗ Principais técnicas e ferramentas de debugging.
✗ Muitos bugs e mão na massa!
Embedded Labworks
OS 6 ESTÁGIOS DE DEBUGGING
1. Isso não acontece.
2. Isso não acontece na minha máquina.
3. Isso não deveria acontecer.
4. Por que isso acontece?
5. Ah, estou vendo acontecer.
6. Como isso um dia funcionou?
Embedded Labworks
DEBUGGING
✗ Depuração ou debugging é o processo de encontrar e resolver erros
(de qualquer natureza).
✗ Em um passado um pouco distante, a palavra bug foi adotada no
jargão de engenheiros para descrever problemas em hardware e
software.
✗ Erros de software incluem tanto aqueles que previnem o programa de
ser executado quanto aqueles que produzem um resultado inesperado.
✗ Uma vez disse um velho sábio: "In the software development process,
we pass 50% debugging, and the other 50% bugging"!
Embedded Labworks
DEPURAÇÃO PASSO-A-PASSO
1. Entender o problema.
2. Reproduzir o problema.
3. Identificar a origem do problema.
4. Corrigir o problema.
5. Resolveu? Se sim, comemore! Se não, volte para o passo 1.
Embedded Labworks
ENTENDER O PROBLEMA
✗ Entender o problema é um dos passos mais importantes no
processo de depuração.
✗ Estude a documentação do sistema (hardware e software).
✗ Procure informações adicionais na Internet, no site do fabricante,
em listas e fóruns de discussão.
✗ Explicar o problema para alguém pode ajudar a entendê-lo melhor.
✗ Com o tempo, você irá adquirir mais experiência e conhecimentos,
e precisará investir menos tempo nesta etapa.
Embedded Labworks
REPRODUZIR O PROBLEMA
✗ Identifique quais são todos os passos necessários para reproduzir
o problema.
✗ Simplifique a reprodução do problema (menor quantidade possível
de entradas que causam o problema).
✗ Não desista de problemas intermitentes! Se necessário, automatize
os testes para aumentar a probabilidade do problema acontecer.
✗ Afinal, se você não conseguir reproduzir o problema, como saberá
que ele foi realmente corrigido?
Embedded Labworks
IDENTIFICAR A ORIGEM
✗ Provavelmente o maior trabalho no processo de depuração está na
identificação da origem do problema.
✗ Esta etapa envolve o uso de diversas técnicas e ferramentas para
rastrear e coletar informações sobre a execução do sistema.
✗ Se for um problema inserido após uma atualização, o método de
divisão e conquista pode ajudar.
✗ Se encontrar outros bugs no processo, deixe anotado. Mas não
perca o foco do bug que está trabalhando no momento!
Embedded Labworks
CORRIGIR O PROBLEMA
✗ Esta etapa envolve atualizar (recompilar, reconfigurar, etc) e
testar o sistema.
✗ Os mesmos passos utilizados para reproduzir o problema devem
ser executados para testar.
✗ O bug só estará corrigido se o problema não puder ser mais
reproduzido!
Embedded Labworks
TIPOS DE PROBLEMAS
✗ Podemos considerar como os 5 principais tipos de problemas em
software:
✗ Crash.
✗ Travamento.
✗ Lógica/implementação.
✗ Vazamento de recurso.
✗ Performance.
Embedded Labworks
CRASH
✗ Quando a execução de um programa é encerrada abruptamente,
considera-se que o programa teve um crash.
✗ Normalmente os crashes acontecem por problemas de acesso
inválido à memória.
✗ No Linux, quando um processo tenta acessar uma região inválida
de memória, o kernel encerra a execução do processo com o erro
de falha de segmentação (Segmentation Fault).
✗ Existem diversas outras possíveis causas de crash, incluindo erros
de divisão por zero e execução de instruções inválidas.
Embedded Labworks
TRAVAMENTO
✗ Quando um deteminado software trava sua execução, considera-se
que o programa teve um problema de travamento.
✗ Uma possível causa é quando a aplicação entra em um loop infinito
por um problema de lógica.
✗ Outra fonte comum é a concorrência em aplicações multithread,
quando duas ou mais threads travam, uma esperando a outra
(chamamos este problema de deadlock).
Embedded Labworks
LÓGICA
✗ Quando a aplicação executa normalmente, porém o resultado do
processamento não é o esperado, considera-se que a aplicação
teve um problema de lógica.
✗ Problemas de lógica podem ter diversas origens como uma
especificação errada, implementação errada, uso incorreto de
funções do sistema, merge de código-fonte mal feito, etc.
✗ Em aplicações multithread, um problema de lógica comum é
quando a sequência ou sincronia de eventos pode interferir no
resultado final (chamamos este problema de race condition).
Embedded Labworks
VAZAMENTO DE RECURSO
✗ Quando o software aloca determinado recurso mas não desaloca após
finalizar seu uso, considera-se que o programa está com um problema
de vazamento de recurso.
✗ A fonte mais comum de vazamento de recurso é no uso da memória do
sistema, quando a aplicação aloca memória mas não desaloca ao
terminar seu uso.
✗ Este problema é chamado de vazamento de memória ou memory leak.
✗ Outros recursos também podem ser fontes de vazamento como
arquivos e sockets.
Embedded Labworks
PERFORMANCE
✗ Quando o software consome recursos de hardware desproporcionais aos
existentes no sistema, considera-se que o programa está com
problemas de performance.
✗ Problemas de performance podem estar relacionados ao consumo
excessivo de CPU, memória, operações de I/O, rede, energia, etc.
✗ Os problemas de performance costumam impactar a usabilidade do
sistema, influenciando os tempos de latência (intervalo entre um evento
e o processamento deste evento) da aplicação.
✗ Em alguns casos, problemas de performance podem até impactar o
resultado final do processamento.
Embedded Labworks
FERRAMENTAS E TÉCNICAS
✗ Para resolver estes problemas, estas são as 5 principais técnicas e
ferramentas de depuração que podemos utilizar:
✗ Conhecimento.
✗ Logs.
✗ Tracing.
✗ Depuração interativa.
✗ Frameworks de depuração.
Embedded Labworks
CONHECIMENTO
✗ Conhecer o sistema que está sendo depurado será sempre sua
melhor ferramenta de depuração.
✗ Isso significa conhecer tanto a teoria de operação (o que deveria
fazer) quanto a prática (como foi implementado).
✗ Documentação do sistema, manuais do fabricante e a Internet são
seus melhores amigos!
✗ Conhecimentos sobre o sistema podem ajudar na resolução de
todos os tipos de problemas.
Embedded Labworks
LOGS
✗ A maioria dos sistemas operacionais possui um sistema de log
onde é armazenado um histórico da execução do sistema
operacional e de todas as suas operações.
✗ Os logs ajudam a entender o fluxo de execução das aplicações, e
podem conter também informações valiosas sobre o problema que
está sendo depurado.
✗ Os logs podem ajudar especialmente na análise de crashes e
problemas de lógica da aplicação.
Embedded Labworks
TRACING
✗ Tracing é uma forma especializada de log, capaz de coletar dados sobre
o estado e o funcionamento de um programa durante sua execução.
✗ Pode ser utilizado tanto para depuração quanto para análise de latência
e performance.
✗ É implementado através da inclusão de pontos de rastreamento
(probes) no código-fonte para instrumentar o software em tempo de
execução.
✗ Ferramentas de tracing podem ajudar especialmente em problemas de
travamento e análise de performance.
Embedded Labworks
DEPURAÇÃO INTERATIVA
✗ Uma ferramenta de depuração interativa permite interagir com a
aplicação em tempo de execução.
✗ Com uma ferramenta de depuração interativa, é possível executar o
código passo-a-passo, colocar pontos de parada (breakpoints),
exibir informações sobre a aplicação (variáveis, stack, etc), listar o
histórico de chamadas de função (backtrace), etc.
✗ No Linux, a principal ferramenta de depuração interativa é o GDB.
✗ Uma ferramenta de depuração interativa pode ajudar especialmente
em crashes, travamentos e problemas de lógica da aplicação.
Embedded Labworks
FRAMEWORKS DE DEPURAÇÃO
✗ Existem diversas ferramentas e aplicações de suporte que podem
ajudar na depuração de problemas em sistemas Linux.
✗ Por exemplo, o kernel Linux possui um framework de depuração de
alocação de memória para auxiliar na identificação de vazamentos
de memória.
✗ No treinamento, chamaremos estas ferramentas de suporte de
frameworks de depuração.
✗ Os frameworks de depuração podem ajudar especialmente em
problemas de vazamento de recursos e travamentos.
Embedded Labworks
PROBLEMAS VS TÉCNICAS
Crash Travamento Lógica Vazamento
de recurso Performance
“Print”
no código
Embedded Labworks
PROBLEMAS VS TÉCNICAS
Crash Travamento Lógica Vazamento
de recurso Performance
“Print”
no código
Embedded Labworks
PROBLEMAS VS TÉCNICAS
Crash Travamento Lógica Vazamento
de recurso Performance
Conhecimento
Logs
Tracing
Depuração
interativa
Frameworks de
depuração
Embedded Labworks
Debugging em Linux embarcado
Vamos por a mão na massa!
Embedded Labworks
Por Sergio Prado. São Paulo, Setembro de 2020
® Copyright Embedded Labworks 2004-2020. All rights reserved.
QUESTIONS?E-mail sergio.prado@e-labworks.com
Website https://e-labworks.com/en
Twitter @sergioprado
Linkedin https://linkedin.com/in/sprado
Blog 1 https://sergioprado.org
Blog 2 https://embeddedbits.org

Contenu connexe

Tendances

Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceHackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceRicardo Rufino
 
Que tal Hackear seu carro e plugá-lo na nuvem ?!
Que tal Hackear seu carro e plugá-lo na nuvem ?!Que tal Hackear seu carro e plugá-lo na nuvem ?!
Que tal Hackear seu carro e plugá-lo na nuvem ?!Ricardo Rufino
 
Introdução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livreIntrodução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livrepichiliani
 
TechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NETTechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NETFabrício Catae
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)Ricardo Rufino
 
Open Cores: Projeto Open "Hardware" com FPGA
Open Cores: Projeto Open "Hardware" com FPGAOpen Cores: Projeto Open "Hardware" com FPGA
Open Cores: Projeto Open "Hardware" com FPGACampus Party Brasil
 
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...Tchelinux
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScriptTaller Negócio Digitais
 

Tendances (14)

Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceHackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
 
Que tal Hackear seu carro e plugá-lo na nuvem ?!
Que tal Hackear seu carro e plugá-lo na nuvem ?!Que tal Hackear seu carro e plugá-lo na nuvem ?!
Que tal Hackear seu carro e plugá-lo na nuvem ?!
 
Introdução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livreIntrodução à visão computacional utilizando software livre
Introdução à visão computacional utilizando software livre
 
Aplicações do microcontrolador PIC
Aplicações do microcontrolador PICAplicações do microcontrolador PIC
Aplicações do microcontrolador PIC
 
Android Fat Binaries
Android Fat BinariesAndroid Fat Binaries
Android Fat Binaries
 
TechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NETTechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NET
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)
 
Android Native Apps Hands On
Android Native Apps Hands OnAndroid Native Apps Hands On
Android Native Apps Hands On
 
Cpic
CpicCpic
Cpic
 
Open Cores: Projeto Open "Hardware" com FPGA
Open Cores: Projeto Open "Hardware" com FPGAOpen Cores: Projeto Open "Hardware" com FPGA
Open Cores: Projeto Open "Hardware" com FPGA
 
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
 
Vivendo de hacking
Vivendo de hackingVivendo de hacking
Vivendo de hacking
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScript
 
Backtrack4 inguma
Backtrack4 ingumaBacktrack4 inguma
Backtrack4 inguma
 

Similaire à Debugging em Linux embarcado: as principais técnicas e ferramentas

Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android EmbarcadoOdair Sousa
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Softblue logic-ide
Softblue logic-ideSoftblue logic-ide
Softblue logic-idemateusvini
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSThiago Rodrigues
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Manoel Campos da Silva Filho
 
1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPress1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPressRudá Almeida
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma JavaEteg
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
P10 dev studio
P10 dev studioP10 dev studio
P10 dev studioPirata Mao
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasCaio Lima
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 
Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Rodrigo Marinho
 
10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleAS10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleASacsvianabr
 
Overview install jammer
Overview install jammerOverview install jammer
Overview install jammerOromar Dantas
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoTchelinux
 

Similaire à Debugging em Linux embarcado: as principais técnicas e ferramentas (20)

Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Softblue logic-ide
Softblue logic-ideSoftblue logic-ide
Softblue logic-ide
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)
 
1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPress1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPress
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma Java
 
Inovando na Plataforma Java
Inovando na Plataforma JavaInovando na Plataforma Java
Inovando na Plataforma Java
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Aula 1a.ppt
Aula 1a.pptAula 1a.ppt
Aula 1a.ppt
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Fundamentos Java - 01
Fundamentos Java - 01Fundamentos Java - 01
Fundamentos Java - 01
 
P10 dev studio
P10 dev studioP10 dev studio
P10 dev studio
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores Práticas
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015
 
10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleAS10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleAS
 
Overview install jammer
Overview install jammerOverview install jammer
Overview install jammer
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
 

Plus de Embarcados

Webinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásicoWebinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásicoEmbarcados
 
Webinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfWebinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfEmbarcados
 
Webinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosWebinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosEmbarcados
 
Webinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCWebinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCEmbarcados
 
Webinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraWebinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraEmbarcados
 
Webinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectWebinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectEmbarcados
 
Webinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalWebinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalEmbarcados
 
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Embarcados
 
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Embarcados
 
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CWebinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CEmbarcados
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GEmbarcados
 
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsWebinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsEmbarcados
 
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Embarcados
 
Cristais e Ressonadores Murata
Cristais e Ressonadores MurataCristais e Ressonadores Murata
Cristais e Ressonadores MurataEmbarcados
 
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaWebinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaEmbarcados
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Embarcados
 
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezWebinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezEmbarcados
 
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Embarcados
 
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroWebinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroEmbarcados
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Embarcados
 

Plus de Embarcados (20)

Webinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásicoWebinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásico
 
Webinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfWebinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdf
 
Webinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosWebinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes Passivos
 
Webinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCWebinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DC
 
Webinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraWebinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP segura
 
Webinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectWebinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto Project
 
Webinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalWebinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissional
 
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
 
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
 
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CWebinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2G
 
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsWebinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
 
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
 
Cristais e Ressonadores Murata
Cristais e Ressonadores MurataCristais e Ressonadores Murata
Cristais e Ressonadores Murata
 
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaWebinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
 
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezWebinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
 
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
 
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroWebinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
 

Debugging em Linux embarcado: as principais técnicas e ferramentas

  • 1. Embedded Labworks Por Sergio Prado. São Paulo, Setembro de 2020 ® Copyright Embedded Labworks 2004-2020. All rights reserved. Webinar Embarcados Debugging em Linux embarcado
  • 2. Embedded Labworks $ WHOAMI ✗ Mais de 20 anos de experiência em desenvolvimento de software para sistemas embarcados, atuando principalmente em projetos com Linux embarcado, Android embarcado e sistemas operacionais de tempo real. ✗ Sócio da Embedded Labworks, onde atua com consultoria, treinamento e desenvolvimento de software para sistemas embarcados. https://e-labworks.com ✗ Team lead na Toradex, responsável pelo time do TorizonCore, uma distribuição Linux baseada em containers para sistemas embarcados. https://toradex.com ✗ Ativo na comunidade de sistemas embarcados e colaborador de alguns projetos de software livre (Buildroot, Yocto Project, Linux). https://embeddedbits.org https://sergioprado.org
  • 3. Embedded Labworks AGENDA DO WEBINAR ✗ Introdução a depuração de software. ✗ Principais técnicas e ferramentas de debugging. ✗ Muitos bugs e mão na massa!
  • 4. Embedded Labworks OS 6 ESTÁGIOS DE DEBUGGING 1. Isso não acontece. 2. Isso não acontece na minha máquina. 3. Isso não deveria acontecer. 4. Por que isso acontece? 5. Ah, estou vendo acontecer. 6. Como isso um dia funcionou?
  • 5. Embedded Labworks DEBUGGING ✗ Depuração ou debugging é o processo de encontrar e resolver erros (de qualquer natureza). ✗ Em um passado um pouco distante, a palavra bug foi adotada no jargão de engenheiros para descrever problemas em hardware e software. ✗ Erros de software incluem tanto aqueles que previnem o programa de ser executado quanto aqueles que produzem um resultado inesperado. ✗ Uma vez disse um velho sábio: "In the software development process, we pass 50% debugging, and the other 50% bugging"!
  • 6. Embedded Labworks DEPURAÇÃO PASSO-A-PASSO 1. Entender o problema. 2. Reproduzir o problema. 3. Identificar a origem do problema. 4. Corrigir o problema. 5. Resolveu? Se sim, comemore! Se não, volte para o passo 1.
  • 7. Embedded Labworks ENTENDER O PROBLEMA ✗ Entender o problema é um dos passos mais importantes no processo de depuração. ✗ Estude a documentação do sistema (hardware e software). ✗ Procure informações adicionais na Internet, no site do fabricante, em listas e fóruns de discussão. ✗ Explicar o problema para alguém pode ajudar a entendê-lo melhor. ✗ Com o tempo, você irá adquirir mais experiência e conhecimentos, e precisará investir menos tempo nesta etapa.
  • 8. Embedded Labworks REPRODUZIR O PROBLEMA ✗ Identifique quais são todos os passos necessários para reproduzir o problema. ✗ Simplifique a reprodução do problema (menor quantidade possível de entradas que causam o problema). ✗ Não desista de problemas intermitentes! Se necessário, automatize os testes para aumentar a probabilidade do problema acontecer. ✗ Afinal, se você não conseguir reproduzir o problema, como saberá que ele foi realmente corrigido?
  • 9. Embedded Labworks IDENTIFICAR A ORIGEM ✗ Provavelmente o maior trabalho no processo de depuração está na identificação da origem do problema. ✗ Esta etapa envolve o uso de diversas técnicas e ferramentas para rastrear e coletar informações sobre a execução do sistema. ✗ Se for um problema inserido após uma atualização, o método de divisão e conquista pode ajudar. ✗ Se encontrar outros bugs no processo, deixe anotado. Mas não perca o foco do bug que está trabalhando no momento!
  • 10. Embedded Labworks CORRIGIR O PROBLEMA ✗ Esta etapa envolve atualizar (recompilar, reconfigurar, etc) e testar o sistema. ✗ Os mesmos passos utilizados para reproduzir o problema devem ser executados para testar. ✗ O bug só estará corrigido se o problema não puder ser mais reproduzido!
  • 11. Embedded Labworks TIPOS DE PROBLEMAS ✗ Podemos considerar como os 5 principais tipos de problemas em software: ✗ Crash. ✗ Travamento. ✗ Lógica/implementação. ✗ Vazamento de recurso. ✗ Performance.
  • 12. Embedded Labworks CRASH ✗ Quando a execução de um programa é encerrada abruptamente, considera-se que o programa teve um crash. ✗ Normalmente os crashes acontecem por problemas de acesso inválido à memória. ✗ No Linux, quando um processo tenta acessar uma região inválida de memória, o kernel encerra a execução do processo com o erro de falha de segmentação (Segmentation Fault). ✗ Existem diversas outras possíveis causas de crash, incluindo erros de divisão por zero e execução de instruções inválidas.
  • 13. Embedded Labworks TRAVAMENTO ✗ Quando um deteminado software trava sua execução, considera-se que o programa teve um problema de travamento. ✗ Uma possível causa é quando a aplicação entra em um loop infinito por um problema de lógica. ✗ Outra fonte comum é a concorrência em aplicações multithread, quando duas ou mais threads travam, uma esperando a outra (chamamos este problema de deadlock).
  • 14. Embedded Labworks LÓGICA ✗ Quando a aplicação executa normalmente, porém o resultado do processamento não é o esperado, considera-se que a aplicação teve um problema de lógica. ✗ Problemas de lógica podem ter diversas origens como uma especificação errada, implementação errada, uso incorreto de funções do sistema, merge de código-fonte mal feito, etc. ✗ Em aplicações multithread, um problema de lógica comum é quando a sequência ou sincronia de eventos pode interferir no resultado final (chamamos este problema de race condition).
  • 15. Embedded Labworks VAZAMENTO DE RECURSO ✗ Quando o software aloca determinado recurso mas não desaloca após finalizar seu uso, considera-se que o programa está com um problema de vazamento de recurso. ✗ A fonte mais comum de vazamento de recurso é no uso da memória do sistema, quando a aplicação aloca memória mas não desaloca ao terminar seu uso. ✗ Este problema é chamado de vazamento de memória ou memory leak. ✗ Outros recursos também podem ser fontes de vazamento como arquivos e sockets.
  • 16. Embedded Labworks PERFORMANCE ✗ Quando o software consome recursos de hardware desproporcionais aos existentes no sistema, considera-se que o programa está com problemas de performance. ✗ Problemas de performance podem estar relacionados ao consumo excessivo de CPU, memória, operações de I/O, rede, energia, etc. ✗ Os problemas de performance costumam impactar a usabilidade do sistema, influenciando os tempos de latência (intervalo entre um evento e o processamento deste evento) da aplicação. ✗ Em alguns casos, problemas de performance podem até impactar o resultado final do processamento.
  • 17. Embedded Labworks FERRAMENTAS E TÉCNICAS ✗ Para resolver estes problemas, estas são as 5 principais técnicas e ferramentas de depuração que podemos utilizar: ✗ Conhecimento. ✗ Logs. ✗ Tracing. ✗ Depuração interativa. ✗ Frameworks de depuração.
  • 18. Embedded Labworks CONHECIMENTO ✗ Conhecer o sistema que está sendo depurado será sempre sua melhor ferramenta de depuração. ✗ Isso significa conhecer tanto a teoria de operação (o que deveria fazer) quanto a prática (como foi implementado). ✗ Documentação do sistema, manuais do fabricante e a Internet são seus melhores amigos! ✗ Conhecimentos sobre o sistema podem ajudar na resolução de todos os tipos de problemas.
  • 19. Embedded Labworks LOGS ✗ A maioria dos sistemas operacionais possui um sistema de log onde é armazenado um histórico da execução do sistema operacional e de todas as suas operações. ✗ Os logs ajudam a entender o fluxo de execução das aplicações, e podem conter também informações valiosas sobre o problema que está sendo depurado. ✗ Os logs podem ajudar especialmente na análise de crashes e problemas de lógica da aplicação.
  • 20. Embedded Labworks TRACING ✗ Tracing é uma forma especializada de log, capaz de coletar dados sobre o estado e o funcionamento de um programa durante sua execução. ✗ Pode ser utilizado tanto para depuração quanto para análise de latência e performance. ✗ É implementado através da inclusão de pontos de rastreamento (probes) no código-fonte para instrumentar o software em tempo de execução. ✗ Ferramentas de tracing podem ajudar especialmente em problemas de travamento e análise de performance.
  • 21. Embedded Labworks DEPURAÇÃO INTERATIVA ✗ Uma ferramenta de depuração interativa permite interagir com a aplicação em tempo de execução. ✗ Com uma ferramenta de depuração interativa, é possível executar o código passo-a-passo, colocar pontos de parada (breakpoints), exibir informações sobre a aplicação (variáveis, stack, etc), listar o histórico de chamadas de função (backtrace), etc. ✗ No Linux, a principal ferramenta de depuração interativa é o GDB. ✗ Uma ferramenta de depuração interativa pode ajudar especialmente em crashes, travamentos e problemas de lógica da aplicação.
  • 22. Embedded Labworks FRAMEWORKS DE DEPURAÇÃO ✗ Existem diversas ferramentas e aplicações de suporte que podem ajudar na depuração de problemas em sistemas Linux. ✗ Por exemplo, o kernel Linux possui um framework de depuração de alocação de memória para auxiliar na identificação de vazamentos de memória. ✗ No treinamento, chamaremos estas ferramentas de suporte de frameworks de depuração. ✗ Os frameworks de depuração podem ajudar especialmente em problemas de vazamento de recursos e travamentos.
  • 23. Embedded Labworks PROBLEMAS VS TÉCNICAS Crash Travamento Lógica Vazamento de recurso Performance “Print” no código
  • 24. Embedded Labworks PROBLEMAS VS TÉCNICAS Crash Travamento Lógica Vazamento de recurso Performance “Print” no código
  • 25. Embedded Labworks PROBLEMAS VS TÉCNICAS Crash Travamento Lógica Vazamento de recurso Performance Conhecimento Logs Tracing Depuração interativa Frameworks de depuração
  • 26. Embedded Labworks Debugging em Linux embarcado Vamos por a mão na massa!
  • 27. Embedded Labworks Por Sergio Prado. São Paulo, Setembro de 2020 ® Copyright Embedded Labworks 2004-2020. All rights reserved. QUESTIONS?E-mail sergio.prado@e-labworks.com Website https://e-labworks.com/en Twitter @sergioprado Linkedin https://linkedin.com/in/sprado Blog 1 https://sergioprado.org Blog 2 https://embeddedbits.org