Logs e Depuração
Stream logs de programa em tempo real e inspecione transações falhadas com solana logs, solana confirm e solana transaction.
Receita
Card de receita de referência rápida - pronto para copiar e colar.
solana logs
solana logs --url devnet
solana confirm -v <SIGNATURE>
solana transaction <SIGNATURE>Quando usar:
- Output de
msg!/println!do seu programa durante dev local. - Diagnosticar erros customizados de programa após send falhado pelo client.
- Assistir tráfego live em devnet enquanto testa integrações.
- Correlacionar logs de instruction com consumo de compute units.
Exemplo Funcional
# Terminal 1: stream logs (localnet example)
solana config set --url http://127.0.0.1:8899
solana logs
# Terminal 2: invoke your program or transfer
solana transfer <RECIPIENT> 0.01 --allow-unfunded-recipient
# or: anchor test / curl RPC sendTransaction
# After a failed tx, inspect signature
SIG="<FAILED_SIGNATURE>"
solana confirm -v "$SIG"
solana transaction "$SIG" --output json-compact | jq '.meta.logMessages, .meta.err'O que isso demonstra:
solana logssubscrevelogsSubscribevia WebSocket RPC.- Confirm verboso imprime logs de programa e códigos de erro inline.
- Output JSON de transação preserva
logMessagesordenados para tickets.
Aprofundamento
Como Funciona
- Programas emitem logs via macros
solana_program::logcapturadas no meta da transação. solana logsfiltra por mentions ou mostra todo output de programa conforme flags.- Transações falhadas ainda retornam meta com logs até o ponto de falha.
- Consumo de compute budget aparece em campos meta em respostas RPC.
Fluxo de Log
| Passo | Comando | Output |
|---|---|---|
| Stream | solana logs | Linhas live de programa |
| Submit | app / CLI tx | Signature |
| Verify | solana confirm -v | Status + logs |
| Archive | solana transaction --output json | Blob meta completo |
Notas bash
# Filter logs mentioning your program ID
solana logs | grep "<YOUR_PROGRAM_ID>"
# Include vote logs (noisy)
solana logs --include-votesErros Comuns
- Sem logs sem invocação - apenas programas executados logam. Correção: confirme que sua instruction realmente rodou (verifique locks de conta e signers).
- Truncamento de log -
msg!excessivo atinge limites de CU e tamanho. Correção: logue resumos, não data completo de conta. - URL WebSocket RPC errada - porta HTTP ≠ porta WS em alguns provedores. Correção: use endpoint WSS documentado pelo provedor; CLI mapeia da URL config em nós padrão.
- Ler logs antes de confirm - race se consultar cedo demais. Correção: espere
confirmedou useconfirm -vem scripts. - Ruído de vote log - streams padrão escondem votes; habilitar inunda output. Correção: omita
--include-votesa menos que depurando validators.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
stdout solana-test-validator | Testes Anchor locais | Debug devnet remoto |
| Aba de transação do explorer | Compartilhar links com colegas | Captura automatizada em CI |
RPC simulateTransaction | Pre-flight sem pouso | Post-mortem de falhas que pousaram |
| Testes Surfpool / LiteSVM | Testes unitários determinísticos | Assistir tráfego mainnet live |
FAQs
solana logs funciona em devnet?
Sim - passe --url devnet ou defina URL config primeiro. Endpoints públicos podem rate-limitar subscriptions.
Por que minhas linhas msg! estão faltando?
Programa pode não ter executado (instruction anterior falhou), logs truncados ou você filtrou program ID errado.
O que é erro comum Program failed to complete?
Códigos de erro customizados mapeiam para anchor_lang::error ou suas variantes ProgramError - decode contra enum de erro do programa.
Posso salvar logs em arquivo?
Pipe solana logs > session.log ou capture logMessages do output JSON de transação.
Como ver compute units usados?
solana confirm -v e meta de transação incluem computeUnitsConsumed em versões RPC compatíveis.
Logs incluem chamadas CPI?
Sim - logs de inner instruction aparecem indentados na ordem de logMessages.
Posso depurar transações mainnet?
Use solana transaction <SIG> contra RPC mainnet - não precisa de solana logs a menos que streamando live.
Como isso difere do output do validator local?
anchor test imprime stdout do validator diretamente; solana logs usa subscriptions RPC - mesmo conteúdo, transporte diferente.
Por que confirm trava?
RPC não avançando, signature errada ou partição de rede. Ctrl+C e retry com endpoint mais saudável.
Posso assistir conta específica?
Use RPC logsSubscribe com filtro mentions em código client; CLI solana logs suporta filtros mention conforme solana logs --help.
Relacionado
- Enviando SOL e Transações - gerar signatures para inspecionar
- Logs Locais e Depuração - debug no lado do validator
- Subscriptions WebSocket - API de subscription subjacente
- Inspecionando Contas e Programas - checks de state de conta
Versões do 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.