Documentação / O IDE

Depuração

Depure Java, Node.js, o navegador, Python, Go, .NET e PL/SQL em um mesmo painel, com configurações sugeridas e depuradores que só são instalados com a sua permissão.

O Yuli depura cada linguagem com o seu depurador de referência e mostra tudo no mesmo painel: pilha, variáveis, console de avaliação e breakpoints. O que estiver faltando só é instalado se você autorizar.

Linguagem Depurador Como o Yuli o inicia
Java e JVM Cliente JDWP nativo Inicia a JVM ou se anexa a ela
Node.js Chrome DevTools Protocol (CDP), com source maps node --inspect ou anexar a um processo
Navegador CDP no Chrome, Chromium ou Edge Um perfil separado, nunca o seu
Python debugpy (DAP) python -m debugpy.adapter, com o ambiente virtual do projeto
Go Delve (DAP) dlv dap, ou anexar a um dlv --headless em execução
.NET netcoredbg (DAP) netcoredbg --interpreter=vscode
Oracle PL/SQL DBMS_DEBUG do Oracle A partir do painel de banco de dados

Sua primeira sessão

0 de 7 feitos

Configurações de depuração

O diálogo Configurações de depuração é aberto pelo botão do painel Depuração ou pelo menu do painel Execução (Configurações de depuração…).

  • Tipos: Java, Node.js, Python, Go, .NET e Navegador.
  • Modos: Iniciar (o Yuli inicia o programa) ou Anexar (ele se conecta a um que já está rodando).
  • Salvas: as que você criou. Sugeridas para este projeto: as que o Yuli encontra no seu código.
Campo Para quê
Programa, Módulo (python -m), Classe principal O que é executado
Argumentos, Diretório de trabalho, Variáveis de ambiente Como é executado
Interpretador, Opções de compilação O Python ou os build flags a usar
Somente meu código, Parar ao entrar Onde para
Host, Porta, ID do processo A que se anexa
URL, Raiz web, Navegador Depuração no navegador

O que o Yuli sugere

Projeto Sugestão
Python main.py, app.py ou manage.py (este com runserver --noreload), e «Python: attach 5678»
Go «Go: .» se houver um go.mod
.NET O arquivo de projeto
Node.js O main do package.json
Navegador Se o projeto usa vite, react-scripts, next, Angular, vue ou svelte. A URL usa a porta 5173 com vite, 4200 com Angular e 3000 nos demais

As configurações são salvas em debug-configs.json, dentro da pasta de trabalho que o Yuli mantém para cada projeto, não no seu repositório.

Anexar a um processo

No modo Anexar, o Yuli procura o que pode ser depurado no seu computador: processos do Node iniciados com --inspect, processos de Python, Go e .NET, JVMs com JDWP e abas do navegador com DevTools. Se não houver nenhum de um tipo, ele avisa; por exemplo: «Não há processos do Node com --inspect escutando.»

Java

  • Cliente JDWP nativo, com árvore de variáveis, valores em linha sobre o código e valores legíveis (um objeto como Owner{id=3, …}, uma data como 2026-10-15, uma coleção com o seu tamanho).
  • Breakpoints condicionais, por contagem, logpoints e de exceção.
  • Hot swap (Ctrl+Alt+F10): recompila com a ferramenta do projeto e redefine as classes alteradas sem reiniciar a sessão.

O avaliador de expressões

Ele é usado no console de avaliação, nas expressões observadas, nas condições dos breakpoints e nas mensagens dos logpoints.

Aceita Não aceita
?: || && | ^ & == != < > <= >= instanceof << >> >>> + - * / % new
Unários + - ! ~ e conversões de tipo Atribuições, ++ e --
Acesso a membros, chamadas de métodos e índices [i] Lambdas

As chamadas de métodos executam código real na JVM que você está depurando. Evite métodos que alterem o estado.

Propriedades do breakpoint

Em Propriedades do breakpoint, você ajusta como cada um se comporta:

  • Condição: expressão Java; para apenas quando é verdadeira.
  • Ocorrência número: para nessa passagem pela linha.
  • Somente registrar com Mensagem: escreve no console sem parar.

Se uma condição não puder ser avaliada, o depurador não a ignora em silêncio: ele para uma vez e mostra o motivo, por exemplo «[condição] «total > limite» (linha 42) não pôde ser avaliada: …».

Node.js e o navegador

  • Source maps (v3): você coloca o breakpoint no seu .ts, .tsx ou no código original, e o Yuli o transfere para o código gerado. Quando a execução para, a pilha volta a mostrar os seus arquivos.
  • Anexar: a qualquer processo do Node que escute com --inspect.
  • Navegador: o Yuli abre o Chrome, o Chromium ou o Edge com um perfil separado (--user-data-dir) e a porta de depuração remota. O seu perfil normal, com as suas sessões e extensões, não é tocado.
  • O hot swap não se aplica ao código com source maps: use o recarregamento a quente do servidor de desenvolvimento.

Python, Go e .NET

Os três usam o protocolo DAP. O Python usa o ambiente virtual do projeto (VIRTUAL_ENV primeiro, depois python3 ou python). O Go pode iniciar dlv dap ou se anexar a um dlv --headless que você já tenha em execução. No editor, o ▶ da margem também oferece depurar o if __name__ == "__main__": do Python, func main e func TestX do Go e o static void Main( do C#.

Instalar o depurador

Se faltar o depurador, aparece «Falta o depurador de…» com o que o Yuli vai fazer, e os botões Instalar e depurar e Cancelar.

O Yuli instala o debugpy com pip no ambiente Python do projeto (ou com --user se você usa o Python do sistema):

bash
pip install debugpy

Iniciar uma sessão nunca instala nada por conta própria. Nada é baixado nem executado sem a sua permissão; se a instalação falhar, o registro fica à vista no mesmo aviso.

PL/SQL

O Yuli depura procedimentos, funções e pacotes do Oracle com DBMS_DEBUG.

  • A conta precisa de DEBUG CONNECT SESSION e DEBUG sobre o objeto (ou DEBUG ANY PROCEDURE).
  • O Yuli recompila o objeto com COMPILE DEBUG.
  • Teclas: F5 continuar, F10 próxima linha, F11 entrar e Shift+F11 sair.

Atalhos

Ação Atalho
Depurar a última configuração Shift+F9
Continuar F9
Próxima linha (step over) F8
Entrar, somente o seu código (step into) F7
Forçar entrada Alt+Shift+F7
Sair do método Shift+F8
Recarregar classes modificadas (hot swap) Ctrl+Alt+F10

Com a IA

Quando um teste ou uma etapa falha, Perguntar à IA pela causa aparece no painel Depuração, no explorador de testes e na verificação de Alterações da IA. O botão prepara o contexto (o erro, a pilha, o código) e o deixa no chat: não o envia; você decide o que perguntar.

Veja também Executar e depurar e Servidores de linguagem e build.