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:
- Ir a “AL: Attach Debugger”
- Seleccionar la sesión activa del Job Queue
- 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
- Usar
Session.LogMessage - Implementar feature flags
- 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.