Logs Locais e Depuração
Leia logs de programa, consumo de compute units e erros de transação em validadores locais sem limites de taxa de RPC.
Receita
Cartão de receita de referência rápida - pronto para copiar e colar.
solana-test-validator
solana logs
anchor test
solana confirm -v <SIGNATURE>Quando usar:
- Iterar na saída de
msg!durante desenvolvimento de instruções. - Medir CU antes do deploy na mainnet.
- Depurar falhas de teste Anchor com meta completa.
- Comparar códigos de erro local vs devnet.
Exemplo Funcional
# Terminal 1
solana-test-validator --reset
# Terminal 2
solana config set --url http://127.0.0.1:8899
solana logs
# Terminal 3
anchor test --skip-local-validator
# Após falha, inspecione a assinatura da saída do teste
solana confirm -v <SIG>O que isso demonstra:
- Stdout do validador e
solana logsexibem saída do programa. - Testes Anchor imprimem assinaturas em falha para follow-up com
confirm -v. - Ambiente local remove ruído de RPC da devnet da depuração.
Aprofundamento
Como Funciona
- Programas registram via
msg!,sol_logesol_log_compute_units. - Meta da transação inclui
logMessagesecomputeUnitsConsumed. - Transações com falha ainda retornam logs até a instrução que falhou.
- Validador local permite chamadas ilimitadas de
simulateTransaction.
Checklist de Depuração
| Sinal | Ferramenta | Ação |
|---|---|---|
| Linhas do programa | solana logs | Rastrear caminho da instrução |
| Código de erro | confirm -v | Mapear para enum Error do programa |
| Uso de CU | campo meta | Ajustar ix de orçamento de compute |
| Estado da conta | solana account | Verificar owners e dados |
Notas bash
# Teste Anchor verboso
anchor test -- --nocapture
# RUST_LOG para harness de teste off-chain
RUST_LOG=debug anchor testArmadilhas
- Spam de log atinge limites -
msg!excessivo trunca logs e queima CU. Correção: registre apenas discriminadores e resumos. - Logs ausentes no caminho de sucesso - instrução pulada por guarda antecipada. Correção: registre nos pontos de entrada dos branches.
- Ignorar CU em testes locais - passa localmente, falha na mainnet congestionada. Correção: defina orçamento de compute com base no CU simulado com margem.
- Ordem errada de terminais - assinante de logs inicia após a tx. Correção: inicie
solana logsantes de enviar transações. - Confundir stdout do validador com logs RPC - ambos mostram saída; correlacione com assinaturas. Correção: inclua assinatura em
msg!apenas em builds de dev.
Alternativas
| Alternativa | Use quando | Não use quando |
|---|---|---|
| Testes LiteSVM | Loops unitários Rust em subsegundos | Depuração de cliente de carteira |
simulateTransaction | Preflight no lado do cliente | Tráfego ao vivo em streaming |
| Surfpool simulate | Cenários de fork da mainnet | Trabalho mínimo só de programa |
solana logs na devnet | Repro compartilhada com colegas | Loop interno rápido |
FAQs
Para onde vão os logs do anchor test?
Stdout do validador de teste e solana logs - habilite -- --nocapture para saída println de teste Rust.
Como vejo CU por instrução?
Use sol_log_compute_units no programa ou leia computeUnitsConsumed total na meta após passes de otimização.
Por que os logs são truncados?
Solana limita bytes de log por transação - reduza verbosidade.
Posso filtrar logs por ID de programa?
solana logs suporta filtros de menção - veja solana logs --help.
Logs de CPI aparecem?
Sim - invocações internas indentam na ordem de logMessages.
Como depuro erros customizados de programa?
Mapeie códigos numéricos para enums #[error_code] no Anchor ou variantes manuais de ProgramError.
A depuração local corresponde à mainnet?
Semântica de execução alinha no Agave 4.1.1; congestionamento e caminhos de priority fee diferem.
Posso salvar logs em arquivo?
Redirecione solana logs ou capture meta JSON de solana transaction.
E os logs do LiteSVM?
LiteSVM 0.6.x captura logs em asserts de teste sem assinaturas WebSocket.
Como depuro orçamento de compute?
Adicione ComputeBudgetInstruction::set_compute_unit_limit no cliente e compare consumido vs limite na meta.
Relacionado
- Logs & Debugging - comandos de log da CLI
- solana-test-validator - cluster local
- Estimating Compute Units - ajuste de CU
- Testing Basics - pirâmide de testes
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.