Documentación / El IDE

Depuración

Depura Java, Node.js, el navegador, Python, Go, .NET y PL/SQL desde un mismo panel, con configuraciones sugeridas y depuradores que se instalan solo con tu permiso.

Yuli depura cada lenguaje con su depurador de referencia y lo muestra todo en el mismo panel: pila, variables, consola de evaluación y breakpoints. Lo que falta se instala solo si tú lo autorizas.

Lenguaje Depurador Cómo lo arranca Yuli
Java y JVM Cliente JDWP nativo Arranca o se adjunta a la JVM
Node.js Chrome DevTools Protocol (CDP), con source maps node --inspect o adjuntar a un proceso
Navegador CDP en Chrome, Chromium o Edge Un perfil aparte, nunca el tuyo
Python debugpy (DAP) python -m debugpy.adapter, con el entorno virtual del proyecto
Go Delve (DAP) dlv dap, o adjuntar a un dlv --headless en marcha
.NET netcoredbg (DAP) netcoredbg --interpreter=vscode
Oracle PL/SQL DBMS_DEBUG de Oracle Desde el panel de base de datos

Tu primera sesión

0 de 7 hechos

Configuraciones de depuración

El diálogo Configuraciones de depuración se abre desde el botón del panel Depuración o desde el menú del panel Ejecución (Configuraciones de depuración…).

  • Tipos: Java, Node.js, Python, Go, .NET y Navegador.
  • Modos: Iniciar (Yuli arranca el programa) o Adjuntar (se conecta a uno que ya corre).
  • Guardadas: las que creaste tú. Sugeridas para este proyecto: las que Yuli encuentra en tu código.
Campo Para qué
Programa, Módulo (python -m), Clase principal Qué se ejecuta
Argumentos, Directorio de trabajo, Variables de entorno Cómo se ejecuta
Intérprete, Opciones de compilación El Python o los build flags a usar
Solo mi código, Detener al entrar Dónde se detiene
Host, Puerto, ID de proceso A qué se adjunta
URL, Raíz web, Navegador Depuración en el navegador

Qué sugiere Yuli

Proyecto Sugerencia
Python main.py, app.py o manage.py (este con runserver --noreload), y «Python: attach 5678»
Go «Go: .» si hay un go.mod
.NET El archivo de proyecto
Node.js El main del package.json
Navegador Si el proyecto usa vite, react-scripts, next, Angular, vue o svelte. La URL usa el puerto 5173 con vite, 4200 con Angular y 3000 en los demás

Las configuraciones se guardan en debug-configs.json, dentro de la carpeta de trabajo que Yuli tiene para cada proyecto, no en tu repositorio.

Adjuntar a un proceso

En modo Adjuntar, Yuli busca lo que se puede depurar en tu equipo: procesos de Node lanzados con --inspect, procesos de Python, Go y .NET, JVM con JDWP y pestañas de navegador con DevTools. Si no hay ninguno de un tipo, te lo dice; por ejemplo: «No hay procesos de Node con --inspect escuchando.»

Java

  • Cliente JDWP nativo, con árbol de variables, valores en línea sobre el código y valores legibles (un objeto como Owner{id=3, …}, una fecha como 2026-10-15, una colección con su tamaño).
  • Breakpoints condicionales, por conteo, logpoints y de excepción.
  • Hot swap (Ctrl+Alt+F10): recompila con la herramienta del proyecto y redefine las clases cambiadas sin reiniciar la sesión.

El evaluador de expresiones

Se usa en la consola de evaluación, en las expresiones vigiladas, en las condiciones de los breakpoints y en los mensajes de los logpoints.

Admite No admite
?: || && | ^ & == != < > <= >= instanceof << >> >>> + - * / % new
Unarios + - ! ~ y conversiones de tipo Asignaciones, ++ y --
Acceso a miembros, llamadas a métodos e índices [i] Lambdas

Las llamadas a métodos ejecutan código real en la JVM que depuras. Evita métodos que cambien el estado.

Propiedades del breakpoint

En Propiedades del breakpoint ajustas cómo se comporta cada uno:

  • Condición: expresión Java; se detiene solo cuando es verdadera.
  • Acierto número: se detiene en ese paso por la línea.
  • Solo registrar con Mensaje: escribe en la consola sin detenerse.

Si una condición no se puede evaluar, el depurador no la ignora en silencio: se detiene una vez y muestra el motivo, por ejemplo «[condición] «total > limite» (línea 42) no se pudo evaluar: …».

Node.js y el navegador

  • Source maps (v3): pones el breakpoint en tu .ts, .tsx o en el código original, y Yuli lo traslada al código generado. Al detenerse, la pila vuelve a mostrar tus archivos.
  • Adjuntar: a cualquier proceso de Node que escuche con --inspect.
  • Navegador: Yuli abre Chrome, Chromium o Edge con un perfil aparte (--user-data-dir) y el puerto de depuración remota. Tu perfil normal, con tus sesiones y extensiones, no se toca.
  • El hot swap no aplica al código con source maps: usa la recarga en caliente del servidor de desarrollo.

Python, Go y .NET

Los tres usan el protocolo DAP. Python usa el entorno virtual del proyecto (VIRTUAL_ENV primero, luego python3 o python). Go puede arrancar dlv dap o adjuntarse a un dlv --headless que ya tengas en marcha. En el editor, el ▶ del margen también ofrece depurar el if __name__ == "__main__": de Python, func main y func TestX de Go y el static void Main( de C#.

Instalar el depurador

Si falta el depurador, aparece «Falta el depurador de…» con lo que Yuli va a hacer, y los botones Instalar y depurar y Cancelar.

Yuli instala debugpy con pip en el entorno de Python del proyecto (o con --user si usas el Python del sistema):

bash
pip install debugpy

Arrancar una sesión nunca instala nada por su cuenta. Nada se descarga ni se ejecuta sin tu permiso; si la instalación falla, el registro queda a la vista en el mismo aviso.

PL/SQL

Yuli depura procedimientos, funciones y paquetes de Oracle con DBMS_DEBUG.

  • La cuenta necesita DEBUG CONNECT SESSION y DEBUG sobre el objeto (o DEBUG ANY PROCEDURE).
  • Yuli recompila el objeto con COMPILE DEBUG.
  • Teclas: F5 continuar, F10 siguiente línea, F11 entrar y Shift+F11 salir.

Atajos

Acción Atajo
Depurar la última configuración Shift+F9
Continuar F9
Siguiente línea (step over) F8
Entrar, solo tu código (step into) F7
Forzar entrada Alt+Shift+F7
Salir del método Shift+F8
Recargar clases modificadas (hot swap) Ctrl+Alt+F10

Con la IA

Cuando una prueba o un paso falla, Preguntar a la IA por la causa aparece en el panel Depuración, en el explorador de pruebas y en la verificación de Cambios IA. El botón prepara el contexto (el error, la pila, el código) y lo deja en el chat: no lo envía; tú decides qué preguntar.

Ver también Ejecutar y depurar y Servidores de lenguaje y build.