Configura Stackdriver Debugger para .NET Core

En esta página, se describe cómo configurar el entorno y la aplicación de .NET Core para usar Stackdriver Debugger. Para algunos entornos, debes especificar de forma explícita el nivel de acceso a fin de permitir que el agente de Stackdriver Debugger envíe datos. Recomendamos configurar el nivel de acceso más amplio posible y, luego, usar Cloud Identity and Access Management para restringir el acceso. De acuerdo con esta práctica recomendada, debes configurar el nivel de acceso para que estén todas las API de Cloud con la opción cloud-platform.

Antes de comenzar

Para comenzar a usar Debugger, asegúrate de que la API de Debugger esté habilitada.
Habilita la API de Debugger

Para usar Stackdriver Debugger mientras ejecutas la aplicación de forma local, realiza lo siguiente:

  • Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS para que apunte a la ruta de archivo completa de la cuenta de servicio json.
  • Configura la variable de entorno STACKDRIVER_DEBUGGER_MODULE en el nombre del componente en depuración. El nombre de este módulo aparecerá en la lista de módulos de Cloud Console que se pueden depurar.
  • Configura la variable de entorno STACKDRIVER_DEBUGGER_VERSION en la versión lógica del módulo en depuración. Esto permite depurar varias versiones lógicas del módulo en Cloud Console.
  • Configura la variable de entorno STACKDRIVER_DEBUGGER_DEBUGGER para que apunte a una ubicación del objeto binario de Stackdriver Debugger.
  • Si se ejecuta en Linux, configura la variable de entorno LD_LIBRARY_PATH para que incluya el directorio de Stackdriver Debugger.

Cuando compilas la aplicación de .NET Core, incluye y, también, implementa archivos PDB con tu código. Incluye las líneas siguientes en cada archivo PDB:

    <PropertyGroup>
      <TargetFramework>netcoreapp2.1</TargetFramework>
      <DebugType>portable</DebugType>
    </PropertyGroup>

Ten en cuenta que cuando se depura una compilación Release, las variables pueden tener un nombre erróneo o no tenerlo.

Entorno estándar de App Engine

El agente de Stackdriver Debugger para .NET Core no es compatible con el entorno estándar de App Engine.

Entorno flexible de App Engine

  1. Cambia el runtime en tu app.yaml a custom:

    runtime: custom
    env: flex
    
  2. Usa un Dockerfile personalizado:

    FROM gcr.io/dotnet-debugger/aspnetcore:2.0
    COPY . /app
    WORKDIR /app
    
    # If you don't have source context delete the below line.
    # See 'Selecting source code automatically' below for more information.
    COPY ./source-context.json /usr/share/dotnet-debugger/agent/
    ENTRYPOINT ["/usr/share/dotnet-debugger/start-debugger.sh", "dotnet", "APPLICATION.dll"]
    

    En el comando anterior, se muestra lo siguiente:

    • APPLICATION es el objeto binario que deseas ejecutar y depurar.

Ahora puedes usar Stackdriver Debugger con tu aplicación.

Para que la página de Depuración en Cloud Console muestre de forma automática el código fuente que coincide con la aplicación implementada, consulta la sección sobre cómo seleccionar el código fuente de forma automática.

Google Kubernetes Engine

GCLOUD

Para habilitar Debugger con gcloud, completa los siguientes pasos:

  1. Crea tu clúster con uno de los niveles de acceso siguientes:

    • https://www.googleapis.com/auth/cloud-platform otorga a tu clúster acceso a todas las API de Google Cloud.

    • https://www.googleapis.com/auth/cloud_debugger otorga a tu clúster acceso solo a la API de Debugger. Usa este nivel de acceso para fortalecer la seguridad de tu clúster.

    gcloud container clusters create example-cluster-name \
           --scopes=https://www.googleapis.com/auth/cloud_debugger
    
  2. Agrega las líneas siguientes a tu Dockerfile para agregar el agente de Debugger a tu app en contenedores:

    FROM gcr.io/dotnet-debugger/aspnetcore:2.0
    COPY . /app
    WORKDIR /app
    # If you don't have the source-context.json file, delete the `COPY` line below.
    # See running locally below for more information.
    COPY ./source-context.json /usr/share/dotnet-debugger/agent/
    
    ENV STACKDRIVER_DEBUGGER_MODULE=MODULE
    ENV STACKDRIVER_DEBUGGER_VERSION=VERSION
    
    # If not running on Google Cloud, uncomment and set the following:
    # ENV GOOGLE_APPLICATION_CREDENTIALS=CREDENTIALS_FILE
    ENTRYPOINT ["/usr/share/dotnet-debugger/start-debugger.sh", "dotnet", "APPLICATION.dll"]
    

    En el comando anterior, se muestra lo siguiente:

    • source-context.json es el archivo con formato JSON que contiene la configuración de contexto de origen. Consulta la sección sobre cómo seleccionar el código fuente de forma automática para obtener información sobre generar este archivo.

    • MODULE es el nombre de la aplicación. Junto con la versión, identifica la aplicación en Cloud Console. Ejemplos: MyApp, Backend o Frontend.

    • VERSION es la versión de la aplicación (p. ej., el ID de compilación). Cloud Console muestra la aplicación en ejecución como MODULE - VERSION. Ejemplos: v1.0, build_147 o v20160520.

    • CREDENTIALS_FILE es la ruta al archivo JSON de credenciales de la cuenta de servicio.

    • APPLICATION es el punto de entrada a la aplicación de .NET Core que se ejecuta con Debugger conectado.

Ahora puedes usar el depurador cuando implementes tu app en contenedores.

Para obtener información más detallada sobre cómo crear un clúster, consulta la sección sobre cómo crear un clúster.

CONSOLE

Para habilitar Debugger con la consola, completa los pasos siguientes:

  1. Después de seleccionar tu tipo de clúster, haz clic en Más opciones en el panel de Grupos de nodos:

    Opciones de grupos de nodos

  2. Selecciona una de las opciones siguientes del panel de Seguridad:

    • Permite acceso total a todas las API de Cloud.

    • Permite el acceso a cada API y, luego, selecciona Habilitada para el Depurador de Cloud.

Ahora puedes usar el depurador con tu aplicación.

Para que la página de Depuración en Cloud Console muestre de forma automática el código fuente que coincide con la aplicación implementada, consulta la sección sobre cómo seleccionar el código fuente de forma automática.

Compute Engine

El agente de Stackdriver Debugger para .NET Core no es compatible con el entorno de Compute Engine.