350 lines
5.1 KiB
Markdown
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) > |