Compartir a través de


Solución de problemas y problemas conocidos de depuración de instantáneas en Visual Studio

Se aplica a: Visual Studio

En este artículo se proporcionan soluciones de problemas comunes que pueden surgir al depurar una aplicación de Azure con Snapshot Debugger en Visual Studio.

Si los pasos descritos en este artículo no resuelven el problema, busque el problema en la Comunidad de desarrolladores o notifique un problema nuevo seleccionando Ayuda>para enviar comentarios>informe de un problema en Visual Studio.

Problema: "Attach Snapshot Debugger" encuentra un error de código de estado HTTP

Si ve el siguiente error en la ventana Salida durante el intento de adjuntar, puede ser un problema conocido que se muestra en las secciones siguientes. Pruebe las soluciones propuestas y, si el problema persiste, póngase en contacto con el alias anterior.

[TIMESTAMP] Error --- Unable to Start Snapshot Debugger - Attach Snapshot Debugger failed: System.Net.WebException: The remote server returned an error: (###) XXXXXX

(401) No autorizado

Este error indica que la llamada de REST que Visual Studio emite a Azure usa una credencial no válida.

Realice estos pasos:

  • Asegúrese de que la cuenta de personalización de Visual Studio tiene permisos para la suscripción y el recurso de Azure a los que está adjuntando. Una manera rápida de determinar esto es comprobar si el recurso está disponible en el cuadro de diálogo de Depurar>Asociar Snapshot Debugger…>Recurso de Azure>Seleccionar existente o en Cloud Explorer.
  • Si este error continúa, use uno de los canales de comentarios descritos al comienzo de este artículo.

Si ha habilitado Autenticación y autorización (EasyAuth) en App Service, es posible que encuentre un error 401 con LaunchAgentAsync en el mensaje de error de la pila de llamadas. Asegúrese de que La acción que se debe realizar cuando la solicitud no está autenticada está establecida en Permitir solicitudes anónimas (sin acción) en Azure Portal y proporcione un authorization.json en D:\Home\sites\wwwroot con el siguiente contenido en su lugar.

{
  "routes": [
    {
      "path_prefix": "/",
      "policies": {
        "unauthenticated_action": "RedirectToLoginPage"
      }
    },
    {
      "http_methods": [ "POST" ],
      "path_prefix": "/41C07CED-2E08-4609-9D9F-882468261608/api/agent",
      "policies": {
        "unauthenticated_action": "AllowAnonymous"
      }
    }
  ]
}

La primera ruta protege eficazmente el dominio de la aplicación de forma similar a Inicio de sesión con [IdentityProvider]. La segunda ruta expone el punto de conexión AgentLaunch de SnapshotDebugger fuera de la autenticación, que solo realiza la acción predefinida de iniciar el agente de diagnóstico de SnapshotDebugger si la extensión de sitio preinstalado SnapshotDebugger está habilitada para el servicio de aplicaciones. Para obtener más información sobre la configuración de authorization.json , consulte Reglas de autorización de direcciones URL.

(403) Prohibido

El error 403 - Prohibido indica que se deniega el permiso. Muchos escenarios diferentes pueden provocar este error.

Realice estos pasos:

  • Compruebe que la cuenta de Visual Studio tiene una suscripción a Azure válida con los permisos de control de acceso basado en rol (RBAC) del recurso. En el caso de AppService, compruebe si tiene permisos para consultar el plan de App Service que hospeda la aplicación.
  • Compruebe que la marca de tiempo de la máquina cliente sea correcta y esté actualizada. Los servidores con marcas de tiempo con una diferencia de más de 15 minutos con respecto la marca de tiempo de la solicitud suelen generar este error.
  • Si este error continúa, use uno de los canales de comentarios descritos al comienzo de este artículo.

(404) No encontrado

El error 404- No encontrado indica que no se encontró el sitio web en el servidor.

Realice estos pasos:

  • Compruebe que tiene un sitio web implementado y en ejecución en el recurso de App Service al que se está asociando.
  • Compruebe que el sitio está disponible en https://< resource.azurewebsites.net>
  • Compruebe que la aplicación web personalizada que se ejecuta correctamente no devuelve un código de estado 404 cuando se accede a https:// resource.azurewebsites.net>.<
  • Si este error continúa, use uno de los canales de comentarios descritos al comienzo de este artículo.

(406) No aceptable

El error 406- Not Accept indica que el servidor no puede responder al tipo establecido en el encabezado Accept de la solicitud.

Realice estos pasos:

  • Compruebe que el sitio está disponible en https:// resource.azurewebsites.net>.<
  • Compruebe que el sitio no se ha migrado a nuevas instancias. Snapshot Debugger usa la noción de ARRAffinity para enrutar solicitudes a instancias específicas que pueden producir este error de forma intermitente.
  • Si este error continúa, use uno de los canales de comentarios descritos al comienzo de este artículo.

(409) Conflicto

El error 409 - Conflicto indica que la solicitud entra en conflicto con el estado actual del servidor.

Este es un problema conocido que se produce cuando un usuario intenta asociar Snapshot Debugger a una instancia de AppService que tiene habilitado ApplicationInsights. ApplicationInsights establece AppSettings con una grafía distinta de Visual Studio, lo que provoca este problema.

Hemos resuelto esto en Visual Studio 2019.

Realice estos pasos:

  • Si este error continúa, use uno de los canales de comentarios descritos al comienzo de este artículo.

(500) Error interno del servidor

El error 500- Error interno del servidor indica que el sitio está inactivo o el servidor no puede controlar la solicitud. Snapshot Debugger funciona solo en aplicaciones en ejecución. Application Insights Snapshot Debugger permite tomar instantáneas de las excepciones y puede ser la mejor herramienta para sus necesidades.

(502) Puerta de enlace incorrecta

El error 502 - Puerta de enlace incorrecta indica un problema de red del lado servidor y puede ser temporal.

Realice estos pasos:

  • Intente esperar unos minutos antes de volver a adjuntar Snapshot Debugger.
  • Si este error continúa, use uno de los canales de comentarios descritos al comienzo de este artículo.

Problema: El punto de acoplamiento no está activado

Si ve un icono de advertencia con el punto de acoplamiento en lugar del icono de punto de acoplamiento normal, el punto de instantánea no está activado.

Captura de pantalla para mostrar que el punto de acoplamiento no se activa.

Realice estos pasos:

  • Asegúrese de usar la misma versión del código fuente para compilar e implementar la aplicación.
  • Asegúrese de cargar los símbolos correctos para la implementación.
  • Para ello, vea la ventana Módulos durante la depuración de instantáneas y compruebe que la columna Archivo de símbolos muestra un archivo .pdb cargado para el módulo que está depurando.
    • Snapshot Debugger intentará descargar automáticamente y usar los símbolos para la implementación.

Problema: Los símbolos no se cargan al abrir una instantánea

Si ve la ventana siguiente, los símbolos no se cargaron.

Captura de pantalla para mostrar que los símbolos no se cargan.

Realice estos pasos:

  • Seleccione Cambiar configuración de símbolos... en la página.

  • En la configuración Depuración > Símbolo, agregue un directorio de caché de símbolos.

  • Reinicie la depuración de instantáneas una vez establecida la ruta de acceso a los símbolos.

    Los símbolos o archivos .pdb disponibles en el proyecto deben coincidir con la implementación de App Service. La mayoría de las implementaciones (implementación a través de Visual Studio, CI/CD con Azure Pipelines o Kudu, etc.) publican los archivos de símbolos en App Service. La configuración del directorio de caché de símbolos permite a Visual Studio usar estos símbolos.

    Captura de pantalla que muestra la configuración de los símbolos.

  • Como alternativa, si la organización usa un servidor de símbolos o cambia los símbolos a una ruta de acceso distinta, use la configuración de símbolos para cargar los símbolos correctos para su implementación.

Problema: No puedo ver la opción "Adjuntar depurador de instantáneas" en Cloud Explorer.

Realice estos pasos:

  • Asegúrese de que el componente de Snapshot Debugger está instalado. Abra el Instalador de Visual Studio y compruebe el componente de Snapshot Debugger en la carga de trabajo de Azure.

  • Para Visual Studio 2019 o versiones posteriores, asegúrese de que la aplicación es compatible:

    • Azure App Service: aplicaciones ASP.NET que se ejecutan en .NET Framework 4.6.1 o versiones posteriores.
    • Azure App Service: aplicaciones ASP.NET Core que se ejecutan en .NET Core 2.0 o posteriores en Windows.
    • Azure Virtual Machines y Virtual Machine Scale Sets: aplicaciones ASP.NET que se ejecutan en .NET Framework 4.6.1 o versiones posteriores.
    • Azure Virtual Machines y Virtual Machine Scale Sets: aplicaciones ASP.NET Core que se ejecutan en .NET Core 2.0 o versiones posteriores en Windows.
    • Azure Kubernetes Service: aplicaciones ASP.NET Core que se ejecutan en .NET Core 2.2 o posteriores en Debian 9.
    • Azure Kubernetes Service: aplicaciones ASP.NET Core que se ejecutan en .NET Core 2.2 o posteriores en Alpine 3.8.
    • Azure Kubernetes Service: aplicaciones ASP.NET Core que se ejecutan en .NET Core 2.2 o posteriores en Ubuntu 18.04.

Problema: Solo veo instantáneas limitadas en las herramientas de diagnóstico

Captura de pantalla que muestra el punto de acoplamiento limitado.

Realice estos pasos:

  • Las instantáneas ocupan poco memoria pero tienen una carga de confirmación. Si Snapshot Debugger detecta que el servidor soporta una carga de memoria pesada, no realizará instantáneas. Puede eliminar las instantáneas que ya están capturadas; para ello, detenga la sesión de Snapshot Debugger y vuelva a intentarlo.

Problema: La depuración de instantáneas con varias versiones de Visual Studio me da errores (Visual Studio 2019 o versiones posteriores)

Visual Studio 2019 requiere una versión más reciente de la extensión de sitio de Snapshot Debugger en la instancia de Azure App Service. Esta versión no es compatible con la versión anterior de la extensión de sitio snapshot Debugger que usa Visual Studio 2017. Obtendrá el siguiente error si intenta adjuntar snapshot Debugger en Visual Studio 2019 a un servicio de App de Azure que el depurador de instantáneas ha depurado anteriormente en Visual Studio 2017:

Captura de pantalla de la extensión de sitio snapshot Debugger incompatible de Visual Studio 2019.

Por el contrario, si usa Visual Studio 2017 para adjuntar snapshot Debugger a un servicio de App de Azure que el depurador de instantáneas ha depurado anteriormente en Visual Studio 2019, obtendrá el siguiente error:

Captura de pantalla de la extensión de sitio snapshot Debugger incompatible Visual Studio 2017.

Para solucionar este problema, elimine la siguiente configuración de la aplicación en Azure Portal y vuelva a adjuntar Snapshot Debugger:

  • INSTRUMENTATIONENGINE_EXTENSION_VERSION
  • SNAPSHOTDEBUGGER_EXTENSION_VERSION

Problema: Estoy adjuntando a la cuenta de almacenamiento o recurso de Azure incorrecta o antigua.

Realice estos pasos:

Las entradas "Recurso de Azure" y "Cuenta de almacenamiento" usan nombres de recursos como claves, por lo que las acciones como migrar un recurso a distintas suscripciones pueden causar problemas. Para borrar la lista, siga estos pasos:

  1. Ejecute estos comandos en el símbolo del sistema para desarrolladores para VS (con privilegios de administrador).

    vsregedit remove local HKCU SnapshotDebugger AzureResourcesMRU
    vsregedit remove local HKCU SnapshotDebugger StorageAccountsMRU
    
  2. Elimine los archivos .suo asociados con la aplicación web.

Problema: Tengo problemas con la depuración de instantáneas y necesito habilitar más registros.

Habilitación de los registros del agente

Para habilitar y deshabilitar el registro del agente, abra Visual Studio y vaya a Herramientas>Opciones>del depurador>de instantáneas Habilitación del registro del agente. Tenga en cuenta que si también está habilitada la opción Eliminar registros antiguos del agente en el inicio de sesión, cada asociación de Visual Studio correcta eliminará los registros anteriores del agente.

Puede encontrar los registros del agente en las siguientes ubicaciones:

  • App Services:
    • Vaya al sitio kudu de App Service (es decir, <suappservice).>scm.azurewebsites.net) y vaya a Consola de depuración.
    • Los registros del agente se almacenan en el directorio siguiente: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
  • VM/VMSS:
    • Inicie sesión en la máquina virtual, los registros del agente se almacenan de la siguiente manera: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
  • AKS
    • Vaya al siguiente directorio: /tmp/diag/AgentLogs/*

Habilitación de registros de profiler/instrumentación

Puede encontrar los registros de instrumentación en las siguientes ubicaciones:

  • App Services:
    • El registro de errores se envía automáticamente a D:\Home\LogFiles\eventlog.xml, los eventos se marcan con <Provider Name="Instrumentation Engine" /> o "Puntos de interrupción de producción".
  • VM/VMSS:
    • Inicie sesión en la máquina virtual y abra el Visor de eventos.
    • Abra la siguiente vista: Registros de Windows>Aplicación.
    • Filtre el registro actual por Origen del evento con las opciones Puntos de interrupción de producción o Motor de instrumentación.
  • AKS
    • Registro del motor de instrumentación en /tmp/diag/log.txt (establecido MicrosoftInstrumentationEngine_FileLogPath en DockerFile)
    • Registro de ProductionBreakpoint en /tmp/diag/shLog.txt

Problemas conocidos

  • Actualmente no se admite la depuración de instantáneas con varios clientes de Visual Studio en la misma instancia de App Service.
  • Las optimizaciones de IL de Roslyn no se admiten completamente en ASP.NET proyectos principales. Para algunos proyectos de ASP.NET Core, es posible que no pueda ver más variables o usar algunas variables en instrucciones condicionales.
  • Las variables especiales, como $FUNCTION o $CALLER, no se pueden evaluar en instrucciones condicionales ni puntos de registro para proyectos de ASP.NET Core.
  • La depuración de instantáneas no funciona en App Services que tienen activado el almacenamiento en caché local.
  • Las aplicaciones de API de depuración de instantáneas no se admiten actualmente.

Actualización de la extensión de sitio

La depuración de instantáneas y Application Insights dependen de ICorProfiler, que se carga en el proceso del sitio y causa problemas de bloqueo de archivos durante la actualización. Se recomienda este proceso para asegurarse de que no hay tiempo de inerción en el sitio de producción.

  • Cree una ranura de implementación en la instancia de App Service e implemente el sitio en la ranura.
  • Intercambie la ranura con producción desde Cloud Explorer en Visual Studio o desde Azure Portal.
  • Detenga el sitio de la ranura. El proceso de w3wp.exe del sitio tarda unos segundos en eliminarse de todas las instancias.
  • Actualice la extensión de sitio de la ranura desde el sitio de Kudu o Azure Portal (App Service Blade (hoja de App Service) > Herramientas de desarrollo > Extensiones > Actualizar).
  • Inicie el sitio de la ranura. Se recomienda visitar el sitio para volver a intentarlo.
  • Intercambie la ranura con producción.

Referencias