prometeu-runtime/docs/topics/chapter-10.md

350 lines
5.1 KiB
Markdown

< [Voltar](chapter-9.md) | [Sumário](table-of-contens.md) | [Adiante](chapter-11.md) >
# 🛠️ **Debug, Inspeção e Profiling**
## 1. Visão Geral
PROMETEU foi projetado para **ser observado**.
Debug, inspeção e profiling **não são ferramentas externas opcionais**
eles são **partes integrantes da máquina**.
Nada acontece sem deixar rastros.
Nada consome recursos sem ser medido.
Nada falha sem explicação.
> PROMETEU não esconde estado.
PROMETEU expõe comportamento.
>
---
## 2. Filosofia de Debug em PROMETEU
PROMETEU segue três princípios fundamentais de debug:
1. **Estado antes de abstração**
O programador vê a máquina antes de ver “features”.
2. **Tempo como primeira classe**
Cada ação é analisada no contexto do frame e dos ciclos.
3. **Observação não altera execução**
Debug nunca muda o comportamento do sistema.
---
## 3. Modos de Execução
PROMETEU opera em três modos principais:
### 3.1 Modo Normal
- execução contínua
- sem inspeção detalhada
- foco em jogo e experiência
---
### 3.2 Modo Debug
- execução controlada
- acesso a estado interno
- pausas e stepping
Este modo é usado para:
- aprendizado
- investigação
- correção de erros
---
### 3.3 Modo Certificação
- execução determinística
- métricas coletadas
- geração de relatório
Nenhum modo altera o resultado lógico do programa.
---
## 4. Debug de Execução
### 4.1 Pausa e Continuação
O sistema pode ser pausado em pontos seguros:
- início do frame
- antes de UPDATE
- após DRAW
- antes do SYNC
Durante pausa:
- estado é congelado
- buffers não são trocados
- tempo lógico não avança
---
### 4.2 Step-by-Step
PROMETEU permite stepping em diferentes níveis:
- **por frame**
- **por função**
- **por instrução da VM**
Stepping por instrução revela:
- Program Counter (PC)
- instrução atual
- pilha de operandos
- call stack
---
## 5. Inspeção de Estado
### 5.1 Pilhas
PROMETEU permite inspecionar:
- **Operand Stack**
- **Call Stack**
Para cada frame:
- conteúdo
- profundidade
- crescimento e limpeza
Stack overflow e underflow são imediatamente visíveis.
---
### 5.2 Heap
O heap pode ser inspecionado em tempo real:
- tamanho total
- uso atual
- pico de uso
- objetos vivos
O programador pode observar:
- padrões de alocação
- fragmentação
- pressão de GC
---
### 5.3 Espaço Global
Variáveis globais:
- valores atuais
- referências
- inicialização
Globais são visíveis como **RAM estática**.
---
## 6. Debug Gráfico
PROMETEU permite inspecionar o sistema gráfico:
- front buffer
- back buffer
- estado da paleta
- sprites ativos
É possível:
- congelar a imagem
- observar buffers separadamente
- identificar redraw excessivo
---
## 7. Profiling de Tempo (Ciclos)
### 7.1 Medição por Frame
Para cada frame, PROMETEU registra:
- ciclos totais usados
- ciclos por subsistema
- picos de execução
Exemplo conceitual:
```
Frame 18231:
Total:9,842/10,000cycles
UPDATE:4,210
DRAW:3,180
AUDIO:920
SYSTEM:612
```
---
### 7.2 Profiling por Função
PROMETEU pode associar ciclos a:
- funções
- métodos
- blocos lógicos
Isso permite responder:
> “onde o tempo está sendo gasto?”
>
---
### 7.3 Profiling por Instrução
No nível mais baixo, o sistema pode exibir:
- instruções executadas
- custo individual
- frequência
Esse nível é especialmente útil para:
- ensino de VM
- otimização profunda
- análise de bytecode
---
## 8. Profiling de Memória
PROMETEU registra:
- uso médio de heap
- pico de heap
- alocações por frame
- frequência de GC
Exemplo:
```
Heap:
Avg:24KB
Peak:34KB❌
Limit:32KB
```
Esses dados alimentam diretamente a certificação.
---
## 9. Breakpoints e Watchpoints
### 9.1 Breakpoints
PROMETEU suporta breakpoints em:
- frames específicos
- funções
- instruções da VM
Breakpoints:
- pausam execução
- preservam estado
- não alteram comportamento
---
### 9.2 Watchpoints
Watchpoints monitoram:
- variáveis
- endereços de heap
- valores específicos
A execução pode pausar quando:
- um valor muda
- um limite é ultrapassado
---
## 10. Debug de Eventos e Interrupções
PROMETEU permite observar:
- fila de eventos
- timers ativos
- interrupções ocorridas
Cada evento possui:
- origem
- frame
- custo
- consequência
Nada acontece “em silêncio”.
---
## 11. Integração com CAP e Certificação
Todos os dados de debug e profiling:
- alimentam o relatório de certificação
- são coletados de forma determinística
- não dependem de ferramentas externas
O relatório final é:
- reproduzível
- auditável
- explicável
---
## 12. Uso Pedagógico
Este sistema permite ensinar:
- como debugar sistemas reais
- como ler métricas
- como correlacionar tempo e memória
- como justificar decisões técnicas
O aluno aprende:
> debug não é tentativa e erro,
é observação informada.
>
---
## 13. Resumo
- debug é parte do sistema
- inspeção é completa
- profiling é determinístico
- tempo e memória são visíveis
- certificação é baseada em evidência
< [Voltar](chapter-9.md) | [Sumário](table-of-contens.md) | [Adiante](chapter-11.md) >