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
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 como2026-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,.tsxo 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):
pip install debugpyYuli compila e instala Delve con tu Go en sus herramientas gestionadas (Delve no publica binarios). Si la última versión de Delve pide un Go más nuevo, usa la más reciente compatible con el tuyo.
go install github.com/go-delve/delve/cmd/dlv@latestSe instala en <runtimes>/delve/bin (la carpeta de runtimes de Yuli; ver Servidores de lenguaje y build).
Yuli descarga netcoredbg (licencia MIT) de github.com/Samsung/netcoredbg/releases/latest y lo guarda en <runtimes>/netcoredbg.
Hay versión para Windows x64, Linux x64 y arm64, y macOS (la de x64, que en Apple Silicon corre con Rosetta). En otras plataformas Yuli te avisa de que no está disponible.
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 SESSIONyDEBUGsobre el objeto (oDEBUG ANY PROCEDURE). - Yuli recompila el objeto con
COMPILE DEBUG. - Teclas:
F5continuar,F10siguiente línea,F11entrar yShift+F11salir.
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.