La depuración avanzada en Microsoft Dynamics 365 Business Central (BC) es una disciplina clave para desarrolladores que trabajan en soluciones complejas, especialmente en entornos SaaS donde el acceso a recursos de bajo nivel es limitado. A medida que las extensiones crecen en tamaño, complejidad y criticidad (por ejemplo, procesos financieros o integraciones), las técnicas básicas de debugging dejan de ser suficientes.

Este artículo profundiza en técnicas avanzadas de depuración en AL, combinando herramientas del entorno, patrones de diagnóstico, instrumentación de código y estrategias para escenarios complejos como procesos batch, eventos, concurrencia y problemas en producción.

Fundamentos del debugging en Business Central Link to heading

Antes de avanzar, es importante recordar que el debugging en BC se basa en:

  • Visual Studio Code como entorno principal
  • AL Language Extension
  • Debugger conectado a sandbox o entorno local
  • Breakpoints, variables, call stack y watch

Sin embargo, en escenarios avanzados, estas herramientas deben complementarse con estrategias adicionales.

Configuración avanzada del debugger Link to heading

launch.json optimizado Link to heading

Un archivo launch.json bien configurado permite mayor control sobre la depuración.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Sandbox Debug",
            "type": "al",
            "request": "launch",
            "server": "https://businesscentral.dynamics.com",
            "environmentType": "Sandbox",
            "environmentName": "Sandbox",
            "authentication": "UserPassword",
            "startupObjectType": "Page",
            "startupObjectId": 22,
            "breakOnError": true,
            "enableLongRunningSqlStatements": true,
            "enableSqlInformationDebugger": true
        }
    ]
}

Debugging de procesos batch (Job Queue) Link to heading

Uno de los escenarios más complejos es depurar procesos ejecutados por Job Queue.

Problema Link to heading

El código no se ejecuta en sesión interactiva, por lo tanto:

  • No se detienen los breakpoints
  • No hay UI visible

Solución: Attach Debugger Link to heading

Se debe usar la opción Attach to Session:

  1. Ir a “AL: Attach Debugger”
  2. Seleccionar la sesión activa del Job Queue
  3. Ejecutar el proceso nuevamente

Uso de Session.LogMessage para debugging estructurado Link to heading

Esta es una de las herramientas más poderosas en entornos SaaS.

Ejemplo avanzado Link to heading

Session.LogMessage(
    'PAYMENT_PROCESS',
    StrSubstNo('Procesando pago Cliente: %1 Importe: %2', Customer."No.", Amount),
    Verbosity::Verbose,
    DataClassification::CustomerContent,
    TelemetryScope::ExtensionPublisher
);

Debugging en producción Link to heading

En SaaS no se puede depurar directamente con breakpoints.

Estrategia Link to heading

  1. Usar Session.LogMessage
  2. Implementar feature flags
  3. Activar logging condicional

Conclusión Link to heading

La depuración avanzada en Business Central requiere mucho más que breakpoints. Implica una combinación de configuración adecuada, instrumentación del código, telemetría y diseño orientado a diagnósticos.