Compartir a través de


Depurar un complemento

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Los siguientes pasos describen cómo depurar un complemento que se ejecuta en Microsoft Dynamics 365 local. Si desea depurar un complemento que se ejecute en el espacio aislado de Microsoft Dynamics 365 (online), debe usar el seguimiento como se describe más adelante en este tema.

En este tema

Debug a plug-in

Depurar un complemento de espacio aislado

Registro y seguimiento

Depurar un complemento

  1. Registre e implemente el ensamblado de complemento.

    Si existe otra copia del ensamblado en la misma ubicación y no puede sobrescribir esa copia porque está bloqueada por Microsoft Dynamics 365, debe reiniciar el proceso de servicio que estaba ejecutando el complemento. Consulte la tabla mostrada a continuación para el proceso de servicio adecuado.Más información: Registrar e implementar complementos

  2. Configure el depurador.

    Adjunte el depurador al proceso en el servidor de Microsoft Dynamics 365 que ejecutará el complemento. Consulte la siguiente tabla para identificar el proceso.

    Configuración del registro de complementos

    Proceso de servicio

    en línea

    w3wp.exe

    sin conexión

    Microsoft.Crm.Application.Hoster.exe

    complementos registrados asincrónicos (o ensamblados de flujo de trabajo personalizados)

    CrmAsyncService.exe

    espacio aislado (modo de aislamiento)

    Microsoft.Crm.Sandbox.WorkerProcess.exe

    Si hay varios procesos que se ejecutan en el mismo archivo ejecutable, por ejemplos varios procesos w3wp.exe, adjunte el depurador a todas las instancias del proceso ejecutable que se está ejecutando. A continuación, defina uno o varios puntos de interrupción en el código del complemento.

  3. Pruebe el complemento.

    Ejecute la aplicación de Microsoft Dynamics 365, u otra aplicación personalizada que use el SDK, y realice la acción que sea necesaria para que el complemento se ejecute. Por ejemplo, si un complemento está registrado para un evento de creación de cuentas, cree una nueva cuenta.

  4. Depure el código del complemento.

    Realice los cambios necesarios en el código de modo que se comporte de la forma deseada. Si se cambia el código, compile el código en un ensamblado y repita los pasos 1 a 4 de este procedimiento según sea necesario. Sin embargo, si cambia los números de versión principales o secundarios del ensamblado de complemento, debe anular el registro de la versión anterior del ensamblado y registrar la nueva.Más información: Registrar e implementar complementos

  5. Registre el complemento en la base de datos.

    Después de que se haya completado el ciclo de edición/compilación/implementación/prueba/depuración para el complemento, anule el registro del ensamblado de complemento (en disco) y vuelva a registrar el complemento en la base de datos de Microsoft Dynamics 365.Más información: Registrar e implementar complementos

Sugerencia

Es posible depurar un complemento implementado en la base de datos. El archivo de símbolos (.pdb) del ensamblado de complementos compilado se debe copiar a la carpeta <crm-root>\Server\bin\assembly del servidor y se debe reiniciar a continuación Internet Information Services (IIS). Después de que la depuración se haya completado, debe quitar el archivo de símbolos y restablecer IIS para evitar que el proceso que estaba ejecutando el complemento consuma memoria adicional.

Para obtener más información sobre cómo depurar un complemento usando la herramienta de generador de perfiles de complementos, consulte Analizar el rendimiento del complemento.

Depurar un complemento de espacio aislado

Es importante realizar estos pasos antes de la primera ejecución de un complemento de espacio aislado. Si el complemento ya se ha ejecutado, cambie el código del ensamblado causante del cambio del hash del ensamblado en el servidor, o reinicie el Servicio de procesamiento de espacios aislados de Microsoft Dynamics 365 en el servidor de espacios aislados.

Configurar el servidor

El proceso de host de espacios aislados supervisa el proceso de trabajo del espacio aislado que ejecuta el complemento. El proceso de host comprueba si el complemento deja de responder, si excede los umbrales de memoria, etc. Si el proceso de trabajo no responde en 30 segundos, se cerrará. Si desea depurar un complemento de espacio aislado, debe deshabilitar esta función de apagado. Para deshabilitar la característica de apagado, establezca la siguiente clave del Registro en 1 (DWORD):

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM\SandboxDebugPlugins

Depurar el complemento

Siga estos pasos para depurar un complemento de espacio aislado.

  1. Registre el complemento en el espacio aislado (modo aislado) e impleméntelo en la base de datos del servidor de Microsoft Dynamics 365.

  2. Copie el archivo de símbolos (.pdb) del ensamblado de complementos compilado en la carpeta server\bin\assembly del servidor que ejecuta el proceso de trabajo de espacios aislados denominado Microsoft.Crm.Sandbox.WorkerProcess.exe. Este es el servidor que hospeda el rol Servicio de procesamiento de espacios aislados.

  3. Siga las instrucciones de los pasos 2 a 4 mostrados al principio de este tema.

Para obtener más información sobre cómo depurar un complemento usando la herramienta de generador de perfiles de complementos, consulte Analizar el rendimiento del complemento.

Registro y seguimiento

El uso del seguimiento es un método alternativo para solucionar problemas en un complemento o una actividad de flujo de trabajo personalizada (código personalizado), en comparación con depurar en Microsoft Visual Studio. El seguimiento ayuda a los desarrolladores registrando información personalizada en tiempo de ejecución como ayuda en el diagnóstico de la causa de los errores del código. El seguimiento es especialmente útil para solucionar problemas de código personalizado registrado de Microsoft Dynamics 365 (online) ya que es el único método que solución de problemas compatible para ese escenario. El seguimiento se admite para código personalizado registrado en espacio aislado (confianza parcial) y de total confianza y durante la ejecución sincrónica o asincrónica. El seguimiento no se admite para código personalizado que se ejecuta en Microsoft Dynamics 365 para Outlook u otro cliente móvil.

El registro de información de seguimiento en tiempo de ejecución para Microsoft Dynamics 365 se consigue mediante un servicio llamado ITracingService. La información proporcionada a este servicio por el código personalizado se puede registrar en tres distintas secciones que se identifican aquí.

  • Registro de seguimiento

    Los registro de seguimiento del tipo PluginTraceLog pueden encontrarse en la aplicación web accediendo a Configuración y eligiendo la ventana Registro de seguimiento de complementos. La ventana solo es visible si tiene acceso a los registros de la entidad de registro de seguimiento en su rol de seguridad asignado. La escritura de estos registros se controla mediante la configuración de seguimiento mencionada en la siguiente sección. Para obtener más información sobre privilegios requeridos para la entidad PluginTraceLog, vea Privilegios por entidad.

    Nota

    El registro de seguimiento ocupa espacio de almacenamiento de la organización, especialmente cuando se generan muchos seguimientos y excepciones. Solo debe activar el registro de seguimiento para depurar y solucionar problemas, y desactivarla después de que la investigación esté completa.

  • Diálogo de errores

    Un complemento registrado sincrónico o una actividad de flujo de trabajo personalizada que devuelve una excepción a la plataforma produce un cuadro de diálogo de error en la aplicación web que se muestran al usuario que ha iniciado sesión. El usuario puede seleccionar el botón Descargar archivo de registro en el cuadro de diálogo para ver el registro que contiene la excepción y la salida de seguimiento.

  • Trabajo del sistema

    Para un complemento registrado asincrónico o actividades de flujo de trabajo personalizadas que devuelven una excepción, la información de seguimiento aparece en el área Detalles del formulario Trabajo del sistema en la aplicación web.

Habilitar registro de seguimiento

Para habilitar el registro de seguimiento en una organización que admite esta característica, en la aplicación web vaya a Configuración > Administración > Configuración del sistema. En la pestaña Personalización, busque el menú desplegable con la etiqueta Habilitar registro para registro de seguimientos de complemento y seleccione una de las opciones disponibles.

Opción

Descripción

Desconectado

La escritura en el registro de seguimiento está deshabilitada. No se creará ningún registro de PluginTraceLog. Sin embargo, el código personalizado puede seguir llamando al método Trace aunque no se escriba ningún registro.

Excepciones

La información de seguimiento se escribe en el registro si se pasa una excepción a la plataforma desde código personalizado.

Todo

La información de seguimiento se escribe en el registro cuando se completa el código o se pasa una excepción a la plataforma desde el código personalizado.

Si el valor del registro de seguimiento se establece en Excepción y el código personalizado devuelve una excepción a la plataforma, se crea un registro de seguimiento y también se escribe información de seguimiento en otra ubicación. Para código personalizado que se ejecuta forma sincrónica, la información se muestra al usuario en un cuadro de diálogo de errores, de lo contrario, para código asincrónico, la información se escribe en el trabajo del sistema relacionado.

De forma predeterminada, los roles de administrador del sistema y personalizador del sistema tienen los privilegios necesarios para cambiar el valor del registro de seguimiento, que se almacena en un registro de entidad TraceSettings. La configuración de seguimiento tiene un ámbito de organización.

Escriba en el servicio de seguimiento

Antes de escribir en el servicio de seguimiento, primero debe extraer el objeto de servicio de seguimiento del contexto de ejecución pasado. A continuación, agregue simplemente llamadas Trace a su código personalizado donde corresponda pasando la información relevante de diagnóstico en esa llamada al método.


//Extract the tracing service for use in debugging sandboxed plug-ins.
ITracingService tracingService =
    (ITracingService)serviceProvider.GetService(typeof(ITracingService));

// Obtain the execution context from the service provider.
IPluginExecutionContext context = (IPluginExecutionContext)
    serviceProvider.GetService(typeof(IPluginExecutionContext));

// For this sample, execute the plug-in code only while the client is online. 
tracingService.Trace("AdvancedPlugin: Verifying the client is not offline.");
if (context.IsExecutingOffline || context.IsOfflinePlayback)
    return;

// The InputParameters collection contains all the data passed 
// in the message request.
if (context.InputParameters.Contains("Target") &amp;&amp;
    context.InputParameters["Target"] is Entity)
{
    // Obtain the target entity from the Input Parameters.
    tracingService.Trace
        ("AdvancedPlugin: Getting the target entity from Input Parameters.");
    Entity entity = (Entity)context.InputParameters["Target"];

    // Obtain the image entity from the Pre Entity Images.
    tracingService.Trace
        ("AdvancedPlugin: Getting image entity from PreEntityImages.");
    Entity image = (Entity)context.PreEntityImages["Target"];

A continuación, genere e implemente el complemento o actividad de flujo de trabajo personalizada. Durante la ejecución del código personalizado, la información proporcionada en las llamadas al método Trace es escrita en un registro de entidad del registro de seguimiento por ITracingService, si lo admite la organización y está habilitada, y también se puede poner a disposición del usuario en un diálogo web o un trabajo del sistema como se describe en la sección anterior. La información de seguimiento escrita en el registro de seguimiento está configurada en los valores de seguimiento. Para obtener más información, vea Habilitar registro de seguimiento.

Nota

Si el código personalizado se ejecuta en una transacción de la base de datos y se produce una excepción que provoca una reversión de la transacción, todos los cambios en los datos de la entidad realizados por el código se desharán. Sin embargo, los registros PluginTraceLog se mantendrán después de que la reversión se complete.

Acerca del servicio de seguimiento.

El ITracingService trata por lotes la información que se le proporciona con el método Trace. La información se escribe en un nuevo registro PluginTraceLog después de que el código personalizado se ejecuta correctamente hasta completarse o genera una excepción.

Los registros PluginTraceLog tienen una duración finita. Un trabajo en segundo plano de eliminación en masa se ejecuta una vez al día para eliminar los registros que tienen más de 24 horas desde su creación. Este trabajo puede deshabilitarse cuando es necesario.

Ver también

Desarrollo de complementos
Analizar el rendimiento del complemento
Registrar e implementar complementos
Canalización de ejecución del evento
Escribir un complemento
Aislamiento, relacioens de confianza y estadísticas de complementos
Mensajes y métodos de la entidad PluginTraceLog

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright