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

              Aplicable a: Visual Studio

En este artículo se proporcionan soluciones de problemas comunes que puede encontrar 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 Developer Community o notifique un nuevo problema eligiendo Enviarcomentarios>de ayuda>para notificar 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 asociación, 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 REST emitida por Visual Studio a Azure usa una credencial no válida.

Siga 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 se va a asociar. 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> AzureSeleccione Existente o en Cloud Explorer.
  • Si este error continúa persistiendo, use uno de los canales de comentarios descritos al principio de este artículo.

Si ha habilitado la autenticación o autorización (EasyAuth) en el App Service, es posible que encuentre un error 401 con LaunchAgentAsync en el mensaje de error de 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 el 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 Iniciar sesión con [IdentityProvider]. La segunda ruta expone el punto de conexión SnapshotDebugger AgentLaunch fuera de la autenticación, que realiza la acción predefinida de iniciar el agente de diagnóstico SnapshotDebugger solo si la extensión de sitio preinstalada 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.

Siga estos pasos:

  • Compruebe que la cuenta de Visual Studio tiene una suscripción de Azure válida con los permisos de Role-Based Access Control (RBAC) necesarios para el recurso. En 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 es correcta y actualizada. Los servidores con marcas de tiempo desactivadas durante más de 15 minutos de la marca de tiempo de la solicitud suelen producir este error.
  • Si este error continúa persistiendo, use uno de los canales de comentarios descritos al principio de este artículo.

(404) No encontrado

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

Siga estos pasos:

  • Compruebe que tiene un sitio web implementado y en ejecución en el recurso de App Service al que se va a asociar.
  • 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 de 404 cuando se accede a ella en https://< resource.azurewebsites.net>.
  • Si este error continúa persistiendo, use uno de los canales de comentarios descritos al principio de este artículo.

(406) No aceptable

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

Siga 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 persistiendo, use uno de los canales de comentarios descritos al principio de este artículo.

(409) Conflicto

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

Se trata de un problema conocido que se produce cuando un usuario intenta asociar Snapshot Debugger a un AppService que ha habilitado ApplicationInsights. ApplicationInsights establece AppSettings con un uso de mayúsculas y minúsculas diferente al de Visual Studio, lo que provoca este problema.

Esto se ha resuelto en Visual Studio 2019.

Siga estos pasos:

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

(500) Error interno del servidor

El error 500 - Error interno del servidor indica que el sitio está inactivo o que el servidor no puede controlar la solicitud. Snapshot Debugger solo funciona en aplicaciones en ejecución. El depurador de instantáneas de Application Insights proporciona instantáneas sobre 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.

Siga estos pasos:

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

Problema: El punto de referencia no está activado

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

Captura de pantalla para mostrar que Snappoint no se activa.

Siga estos pasos:

  • Asegúrese de usar la misma versión del código fuente para compilar e implementar la aplicación.
  • Asegúrese de que carga los símbolos correctos para la implementación.
  • Para ello, vea la ventana Módulos mientras 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 y usar automáticamente símbolos para la implementación.

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

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

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

Siga estos pasos:

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

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

  • Reinicie la depuración de instantáneas una vez establecida la ruta de acceso del símbolo.

    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 junto con el App Service. Al establecer el directorio de caché de símbolos, Visual Studio puede usar estos símbolos.

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

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

Problema: No puedo ver la opción "Adjuntar snapshot Debugger" en Cloud Explorer

Siga estos pasos:

  • Asegúrese de que el componente Snapshot Debugger está instalado. Abra el Instalador de Visual Studio y compruebe el componente 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:

    • App de Azure Services: ASP.NET aplicaciones que se ejecutan en .NET Framework 4.6.1 o posterior.
    • App de Azure Services: ASP.NET Core aplicaciones que se ejecutan en .NET Core 2.0 o versiones posteriores en Windows.
    • Azure Virtual Machines (y conjunto de escalado de máquinas virtuales): ASP.NET aplicaciones que se ejecutan en .NET Framework 4.6.1 o posterior.
    • Azure Virtual Machines (y conjunto de escalado de máquinas virtuales): ASP.NET Core aplicaciones que se ejecutan en .NET Core 2.0 o versiones posteriores en Windows.
    • Azure Kubernetes Services: ASP.NET Core aplicaciones que se ejecutan en .NET Core 2.2 o posterior en Debian 9.
    • Azure Kubernetes Services: ASP.NET Core aplicaciones que se ejecutan en .NET Core 2.2 o posterior en Alpine 3.8.
    • Azure Kubernetes Services: ASP.NET Core aplicaciones que se ejecutan en .NET Core 2.2 o posterior 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.

Siga estos pasos:

  • Las instantáneas toman poca memoria, pero tienen un cargo de confirmación. Si Snapshot Debugger detecta que el servidor está bajo una carga de memoria pesada, no tomará instantáneas. Para eliminar las instantáneas ya capturadas, detenga la sesión del depurador de instantáneas y vuelva a intentarlo.

Problema: la depuración de instantáneas con varias versiones de Visual Studio me proporciona 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 el Azure App Service. Esta versión no es compatible con la versión anterior de la extensión de sitio snapshot Debugger usada por Visual Studio 2017. Obtendrá el siguiente error si intenta adjuntar snapshot Debugger en Visual Studio 2019 a un Azure App Service que el depurador de instantáneas ha depurado anteriormente en Visual Studio 2017:

Captura de pantalla de la extensión de sitio del depurador de instantáneas incompatible Visual Studio 2019.

Por el contrario, si usa Visual Studio 2017 para adjuntar snapshot Debugger a un Azure App Service 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 del depurador de instantáneas incompatible Visual Studio 2017.

Para corregirlo, elimine la siguiente configuración de la aplicación en el 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.

Siga estos pasos:

Las entradas "Recurso de Azure" y "Cuenta de almacenamiento" usan nombres de recursos como claves para que acciones como la migración de un recurso a distintas suscripciones puedan 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 a la aplicación web.

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

Habilitación de registros de agente

Para habilitar y deshabilitar el registro del agente, abra Visual Studio y vaya a Opciones>de herramientas>Snapshot Debugger>Enable agent logging (Habilitar registro de agente). Tenga en cuenta que si también está habilitada la opción Eliminar registros de agente antiguos al iniciar la sesión , cada asociación correcta de Visual Studio eliminará los registros del agente anteriores.

Puede encontrar registros de agente en las siguientes ubicaciones:

  • App Services:
    • Vaya al sitio kudu del App Service (es decir, <su servicio de aplicación>).scm.azurewebsites.net) y vaya a La 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 y los registros del agente se almacenan de la siguiente manera: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
  • AKS
    • Vaya al directorio siguiente: /tmp/diag/AgentLogs/*

Habilitación de registros de Profiler/Instrumentation

Puede encontrar 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 Visor de eventos.
    • Abra la siguiente vista: Aplicación de registros de>Windows.
    • Filtre el registro actual por origen de eventos mediante 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 con el mismo App Service.
  • Las optimizaciones de Roslyn IL no son totalmente compatibles con los proyectos de ASP.NET Core. En algunos proyectos de ASP.NET Core, es posible que no pueda ver algunas variables ni usar algunas variables en instrucciones condicionales.
  • Las variables especiales, como $FUNCTION o $CALLER, no se pueden evaluar en instrucciones condicionales o puntos de registro para proyectos de ASP.NET Core.
  • La depuración de instantáneas no funciona en App Services que tienen el almacenamiento en caché local activado.
  • 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 un ICorProfiler, que se carga en el proceso del sitio y provoca problemas de bloqueo de archivos durante la actualización. Se recomienda este proceso para asegurarse de que no hay ningún tiempo de inactivación en el sitio de producción.

  • Cree una ranura de implementación dentro de la App Service e implemente el sitio en la ranura.
  • Cambie la ranura por producción desde Cloud Explorer en Visual Studio o desde el Azure Portal.
  • Detenga el sitio de ranura. La eliminación del sitio w3wp.exe proceso de todas las instancias tarda unos segundos.
  • Actualice la extensión del sitio de ranura desde el sitio de Kudu o el Azure Portal (App Service actualización de las > herramientas > de desarrollo de hoja>).
  • Inicie el sitio de ranura. Se recomienda visitar el sitio para volver a calentarlo.
  • Cambie la ranura por producción.

Referencias