Servidor DAP — Debug Adapter Protocol

Archivo: src/bin/forja_dap.rs (750 líneas)

¿Por qué existe?

Implementa un servidor que habla el protocolo DAP (Debug Adapter Protocol) de Microsoft, permitiendo que editores como VS Code y Neovim usen el debugger integrado de Forja con interfaz gráfica. El DAP es el estándar de la industria para depuradores en IDEs.

¿Cómo funciona?

El binario forja_dap actúa como un adaptador entre el editor y el debugger de Forja:

  1. El editor inicia forja_dap como un proceso hijo
  2. La comunicación se hace mediante JSON sobre stdin/stdout (DAP)
  3. forja_dap traduce los comandos DAP a llamadas al Debugger de src/debugger.rs
  4. El editor muestra la UI de debugging (breakpoints, variables, call stack, etc.)

Eventos DAP implementados

Evento DAPDescripción
initializeNegocia capacidades del debugger con el editor
launchInicia el programa Forja a depurar
setBreakpointsEstablece breakpoints desde el editor
setExceptionBreakpointsConfigura breakpoints en excepciones
configurationDoneSeñal de que la configuración inicial ha terminado
continueContinúa la ejecución hasta el próximo breakpoint
nextStep over: ejecuta la siguiente línea sin entrar a funciones
stepInStep into: entra a la función llamada
stepOutStep out: sale de la función actual
stackTraceObtiene la pila de llamadas actual
scopesObtiene los ámbitos de variables del frame actual
variablesObtiene las variables de un ámbito específico
disconnectDesconecta y termina la sesión de debugging

Configuración en VS Code

📄 .vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "forja-dap",
            "request": "launch",
            "name": "Depurar Forja",
            "program": "${workspaceFolder}/ejemplo.fa"
        }
    ]
}
🔍 Uso: Ejecutá forja debug ejemplo.fa para modo terminal, o configurá VS Code para usar forja_dap como adaptador DAP.