< [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) >