FAVORITAR
FecharPlease login

Core Dump: Uma Ferramenta Poderosa para Debugar Programas no Zephyr com o ESP32

ÍNDICE DE CONTEÚDO

Este post faz parte da série Zephyr RTOS no ESP32. Leia também os outros posts da série:

O Zephyr Project é um sistema operacional em tempo real (RTOS) de código aberto, escalável e adaptável para várias plataformas de hardware, incluindo os módulos da Espressif: ESP32, ESP32S2, ESP32C3 e ESP32S3. O Zephyr oferece uma ampla gama de recursos para o desenvolvimento de sistemas embarcados, incluindo suporte para geração e análise de core dump nos casos de falhas e crashes no software.

O core dump é uma cópia do estado da memória de um programa quando ele falha. Ele pode ser usado para depurar o programa e encontrar a causa do crash. Com o core dump, é possível descobrir qual tarefa, em qual instrução (linha de código) e qual stack de chamadas levou ao crash. Além disso, é possível visualizar o conteúdo das variáveis, caso atribuídas anteriormente.

O Zephyr fornece suporte para vários backends de core dump, incluindo o backend de LOG. O backend de LOG direciona o conteúdo do core dump para a UART, podendo ser salvo em um arquivo de texto comum, e em seguida analisado usando um servidor GDB personalizado e o GDB fornecido pelo SDK.

Uso do Core Dump

Para habilitar o core dump utilizando o backend de Log é necessário setar as seguintes configurações: 

No dia 25 de Junho de 2024, ocorrerá o “Seminário de Sistemas Embarcados e IoT 2024“, no Holiday Inn Anhembi — Parque Anhembi, São Paulo–SP.

Garanta seu ingresso

Uma vez habilitado, a aplicação vai gerar o core dump no caso de um fatal error e o conteúdo será direcionado para o console.

Copie e cole o conteúdo em um arquivo chamado coredump.log

Precisamos converter esse arquivo de texto em um binário que possa ser lido pelo servidor GDB. Para fazer isso basta rodar o script coredump_serial_log_parser.py:

O script vai gerar o arquivo coredump.bin.

Inicie o servidor GDB usando o arquivo .elf da aplicação Zephyr e o arquivo binário do core dump como parâmetros:

Em outro terminal, rode o GDB presente no SDK do Zephyr com o .elf da aplicação Zephyr como parâmetro:

Dentro do GDB, conecte ao servidor:

Vamos buildar e programar a placa esp32_devkitc com o teste localizado em tests/subsys/debug/coredump

O programa define três funções: func_1, func_2, e func_3. func_1 chama a func_2, que por sua vez chama func_3. func_3 tenta acessar um ponteiro nulo, o que causa um crash no programa .

O crash vai gerar um core dump, que utilizaremos para debugar a aplicação.

1 – Compile a aplicação

2 – Conecte a placa em uma porta USB e utilize o seguinte comando para programá-la e conectar a ela:

A saída esperada será:

O conteúdo do core dump começa com #CD:BEGIN# e termina com #CD:END#. Precisamos copiar o conteúdo para um novo arquivo chamado coredump.log

3 – Copie o conteúdo para o arquivo coredump.log

4 – Converta coredump.log para o formato binário:

5 – Inicie o servidor GDB:

Saída esperada:

6 – Em outro terminal, inicie o GDB localizado no SDK da Zephyr.

7 – Dentro do GDB, conecte ao servidor remoto:

8 – Rode o comando bt para ver o backtrace no momento do crash:

Conclusão

Core dump é uma ferramenta muito útil para debugar programas no Zephyr utilizando o ESP32. O backend de Log nos permite recuperar facilmente o conteúdo do core dump para ser analisado pelo depurador, ajudando a identificar problemas na sua aplicação de forma simples e rápida.

Saiba Mais

Zephyr RTOS – Debugando uma aplicação no ESP32 com o ESP-Prog

Zephyr RTOS no ESP32 – Primeiros Passos

Blink LED no ESP32 e Zephyr RTOS

Zephyr RTOS – Instalando o Ambiente de Desenvolvimento

Outros artigos da série

Zephyr RTOS no ESP32 – Primeiros Passos >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
Inline Feedbacks
View all comments
Home » Software » Core Dump: Uma Ferramenta Poderosa para Debugar Programas no Zephyr com o ESP32

EM DESTAQUE

WEBINARS

LEIA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste:


Seminário de
Sistemas Embarcados e IoT 2024
 
Data: 25/06 | Local: Hotel Holiday Inn Anhembi, São Paulo-SP
 
GARANTA SEU INGRESSO

 
close-link