Depuración de la aplicación con GitHub Copilot en Visual Studio

En este artículo, aprenderás a depurar de forma más eficaz usando GitHub Copilot. Copilot puede proporcionar correcciones de código junto con análisis detallados y explicaciones sobre cómo funciona el código. Ayuda con correcciones propuestas a errores y explica cosas como excepciones. Copilot comprende las pilas de llamadas, los marcos, los nombres de variables y los valores. Como resultado, puede interactuar con la inteligencia artificial compatible con el depurador para formular preguntas detalladas relacionadas con el código y para depurar problemas en general.

Además, Copilot proporciona ayuda más precisa para algunos escenarios específicos, como excepciones, y todos los descritos en escenarios mejorados por la IA para la depuración. En la mayoría de estos escenarios, busque el Pregunta a CopilotCaptura de pantalla del botón Pregunta a Copilot o el botón Analizar con Copilot. En estos escenarios, Copilot ya conoce el contexto de sus preguntas.

Para obtener más información sobre las finalizaciones de GitHub Copilot en Visual Studio, consulte Acerca de las finalizaciones de GitHub Copilot en Visual Studio.

Requisitos previos

Para empezar, necesita lo siguiente:

Escenarios mejorados con IA

Copilot comprende las pilas de llamadas, los marcos, los nombres de variables y los valores. Como resultado, puede interactuar con la inteligencia artificial compatible con el depurador para formular preguntas detalladas relacionadas con el código y para depurar problemas en general.

Además, Copilot proporciona ayuda más precisa para algunos escenarios específicos, como los descritos en la tabla siguiente.

Característica o escenario Vínculo
Agente del depurador Consulte Resolución de errores con el Debugger Agent en este artículo. Flujo de trabajo agente de un extremo a otro que reproduce errores, instrumenta la aplicación y valida correcciones mediante datos en tiempo de ejecución en vivo.
Análisis de pila de llamadas Consulte Analizar la pila de llamadas con Copilot. Obtenga un análisis con solo un clic de lo que está haciendo el hilo, incluidas las explicaciones del flujo asincrónico.
Excepciones Consulte Depurar una excepción con Copilot en este artículo. La ayuda con excepciones incluye ayuda con errores de detección de interbloqueo.
variables Consulte Obtención de ayuda para la inteligencia artificial.
Análisis de consultas LINQ Mantenga el puntero sobre las consultas LINQ durante la depuración en el editor de código para ver el valor de retorno. Seleccione el botón Analyze con Copilot para obtener asistencia de IA. Consulte Visualización de valores devueltos de consultas LINQ.
Sugerencias de datos Consulte Obtener ayuda de IA con sugerencias de datos.
Puntos de interrupción condicionales y puntos de seguimiento Consulte Obtener sugerencias con puntos de interrupción condicionales y puntos de seguimiento en este artículo.
Acciones rápidas (bombilla) Consulte Asistencia de IA con Acciones Rápidas.
Visualizador de tablas IEnumerable Consulte Obtención de ayuda para la inteligencia artificial.
Detección automática y formato en el visualizador de texto Consulte Detección automática y formato. Copilot identifica automáticamente las cadenas codificadas o comprimidas y las descodifica en un solo clic.
Valores devueltos insertados Consulte Ver valores devueltos de llamadas de método.
Valores en línea Consulte Visualización de valores insertados.
Depuración multiproceso Consulte Obtén asistencia de IA en la vista de Subprocesos.
Pruebas unitarias Vea Obtener ayuda de IA para depurar pruebas
Inspección de excepciones con contexto de repositorio Consulte Obtención de ayuda de IA con el contexto del repositorio.
Solución de problemas de puntos de interrupción Consulte Obtención de ayuda para la inteligencia artificial.
Característica o escenario Vínculo
Análisis de pila de llamadas Consulte Analizar la pila de llamadas con Copilot. Obtenga un análisis con solo un clic de lo que está haciendo el hilo, incluidas las explicaciones del flujo asincrónico.
Excepciones Consulte Depurar una excepción con Copilot en este artículo. La ayuda con excepciones incluye ayuda con errores de detección de interbloqueo.
variables Consulte Obtención de ayuda para la inteligencia artificial.
Análisis de consultas LINQ Mantenga el puntero sobre las consultas LINQ durante la depuración en el editor de código para ver el valor de retorno. Seleccione el botón Analyze con Copilot para obtener asistencia de IA. Consulte Visualización de valores devueltos de consultas LINQ.
Sugerencias de datos Consulte Obtener ayuda de IA con sugerencias de datos.
Puntos de interrupción condicionales y puntos de seguimiento Consulte Obtener sugerencias con puntos de interrupción condicionales y puntos de seguimiento en este artículo.
Acciones rápidas (bombilla) Consulte Asistencia de IA con Acciones Rápidas.
Visualizador de tablas IEnumerable Consulte Obtención de ayuda para la inteligencia artificial.
Valores devueltos insertados Consulte Ver valores devueltos de llamadas de método.
Valores en línea Consulte Visualización de valores insertados.
Depuración multiproceso Consulte Obtén asistencia de IA en la vista de Subprocesos.
Pruebas unitarias Vea Obtener ayuda de IA para depurar pruebas
Inspección de excepciones con contexto de repositorio Consulte Obtención de ayuda de IA con el contexto del repositorio.
Solución de problemas de puntos de interrupción Consulte Obtención de ayuda para la inteligencia artificial.

En la mayoría de estos escenarios, obtendrá ayuda dirigida mediante el botón Ask CopilotCaptura de pantalla del botón Ask Copilot. o el botón Analizar con Copilot. Copilot ya conoce el contexto de sus preguntas. Por ejemplo, conoce la pila de llamadas actual, la línea de código que está preguntando y el nombre de la excepción (si se ha producido), por lo que no es necesario proporcionar contexto en el chat. Copilot también proporciona sugerencias para el uso de puntos de interrupción condicionales y puntos de seguimiento.

Depurar con Copilot

En el ejemplo sencillo siguiente se muestra cómo obtener ayuda de IA mediante la vista chat en línea.

Nota

También puede obtener ayuda mediante la ventana Chat independiente seleccionando View > GitHub Copilot Chat. Para obtener más información, consulte ¿Qué es la extensión Copilot Chat de GitHub para Visual Studio?.

Inicio de una sesión de depuración

  1. En Visual Studio, cree una aplicación de consola de C#.

    En la ventana de inicio, elija Crear un proyecto nuevo. Escriba console en el cuadro de búsqueda, seleccione C# como idioma y elija Console App para .NET. Seleccione Siguiente. Escriba un nombre de proyecto como ConsoleApp_Copilot y seleccione Siguiente.

    Elija la plataforma de destino recomendada o .NET 10 y, después, elija Crear.

    Si no ve la plantilla de proyecto Console App para .NET, vaya a Tools>Get Tools and Features, que abre el instalador de Visual Studio. Elija la carga de trabajo de desarrollo de escritorio .NET y elija Modificar.

    Visual Studio crea el proyecto de consola, que aparece en Solution Explorer en el panel derecho.

  2. Reemplace el código de Program.cs por el código siguiente:

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
        public static void Main(string[] args)
        {
            int value = Int32.Parse(args[0]);
            List<String> names = null;
            if (value > 0)
                names = new List<String>();
    
            names.Add("Major Major Major");
        }
    }
    
  3. Haga clic con el botón derecho en la instrucción siguiente y elija Punto de interrupción>Insertar punto de interrupción.

    int value = Int32.Parse(args[0]);
    
  4. Presione F5 o seleccione Iniciar depuración en el menú Depurar.

    La aplicación se detiene en el punto de interrupción. La ventana Autos muestra que la variable args tiene un valor de string[0].

    captura de pantalla de la ventana Autos.

  1. Haga clic con el botón derecho en el código y elija Chat para abrir la vista Chat insertada.
  1. Haga clic con el botón derecho en el código y elija Ask Copilot para abrir la vista Chat en línea.

Sugerencia

Como alternativa, puede hacer clic con el botón derecho en una variable en la ventana Automático o Variables locales, o en una sugerencia de datos, y elegir Ask Copilot. Esto proporciona Copilot con el nombre y el contexto de la variable, por lo que no es necesario proporcionar contexto en el chat.

  1. Escriba la siguiente pregunta en la vista chat en línea:

    Why does the args variable have a value of string[0]?
    

Captura de pantalla de Copilot Chat.

Al presionar Enter, Copilot proporciona una respuesta basada en su comprensión del código. (Puede obtener una respuesta diferente a la que se muestra aquí).

Captura de pantalla de la pregunta respondida por Copilot.

Si Copilot tiene una corrección sugerida para tu código, te lo muestra. Si no es así, puede pedir a Copilot una sugerencia de código.

Sugerencia

En el chat insertado, use el símbolo "#" y seleccione en la lista desplegable para entregar información específica para Copilot mientras hace referencia a ella en su pregunta. Por ejemplo, si selecciona una parte del código y, a continuación, escribe #, puede elegir esa selección en la lista desplegable #. También puede usar el símbolo "#" para hacer referencia a las características del IDE que aparecen en la lista desplegable, como la ventana Variables locales.

  1. En este ejemplo, desplácese hasta el final de la respuesta Copilot y seleccione la pregunta de seguimiento al final de la ventana Chat en línea, "¿Cómo puedo controlar el caso cuando no se pasa ningún argumento al programa?"

    Captura de pantalla de la pregunta de seguimiento de Copilot.

    Copilot muestra una corrección sugerida para tu código.

    Captura de pantalla de la corrección sugerida por Copilot.

    Si desea aplicar la corrección de código, seleccione Tab.

  2. Seleccione Alt+Delete para poder seguir aprendiendo otras características de Copilot en la sección siguiente.

Captura de pantalla de Copilot Chat.

Al presionar Enter, Copilot proporciona una respuesta basada en su comprensión del código. (Puede obtener una respuesta diferente a la que se muestra aquí).

Captura de pantalla de la pregunta contestada por Copilot.

Si Copilot tiene una corrección sugerida para tu código, te lo muestra. Si no es así, puede pedir a Copilot una sugerencia de código.

Sugerencia

En el chat insertado, use el símbolo "#" y seleccione en la lista desplegable para entregar información específica para Copilot mientras hace referencia a ella en su pregunta. Por ejemplo, si selecciona una parte del código y, a continuación, escribe #, puede elegir esa selección en la lista desplegable #. También puede usar el símbolo "#" para hacer referencia a las características del IDE que aparecen en la lista desplegable, como la ventana Variables locales.

  1. En este ejemplo, desplácese hasta el final de la respuesta Copilot y seleccione la pregunta de seguimiento al final de la ventana Chat en línea, "¿Cómo puedo controlar el caso cuando no se pasa ningún argumento al programa?"

    Captura de pantalla de la pregunta de seguimiento de Copilot.

    Copilot muestra una corrección sugerida para tu código.

    Captura de pantalla de la corrección sugerida por Copilot.

    Si desea aplicar la corrección de código, elija Aceptar.

  2. Elija Cancel para poder seguir aprendiendo otras características de Copilot en la sección siguiente.

Depuración de una excepción con Copilot

En este ejemplo sencillo, se muestra cómo obtener ayuda de inteligencia artificial cuando se produce una excepción y cómo actualizar rápidamente el código en función de las correcciones sugeridas por la inteligencia artificial.

Inicio de una sesión de depuración

  • Mientras se pausa en el depurador con la misma aplicación de ejemplo, presione F11 o Depurar>Paso a paso para ejecutar la instrucción actual.

    Se produce una excepción IndexOutOfRangeException y la aplicación se pausa. En ese momento, se muestra más información.

    Para obtener ayuda de inteligencia artificial para la excepción, continúe con la sección siguiente.

Solicitar ayuda de inteligencia artificial

  1. Con la aplicación en pausa en excepción, seleccione el botón Analizar con Copilot.

    Captura de pantalla del botón Ask Copilot dentro de una excepción.

    Si aún no está abierto, aparece la ventana Copilot Chat y proporciona una evaluación del error y por qué se produjo. En este ejemplo, Copilot identifica una corrección de código sugerida, un botón para copiar código y un botón Preview para la corrección de código.

    Si tiene preguntas sobre la excepción, hágalo en el cuadro de texto Ask Copilot.

     Captura de pantalla del botón Vista previa de la ventana Copilot Chat.

  2. En la ventana de chat de Copilot, indique Copilot que quiere que impida el error.

  3. Cuando Copilot sugiere una corrección en la ventana de chat, seleccione Apply.

  4. Revise la corrección sugerida y seleccione Pestaña para aplicar la sugerencia de código.

    Captura de pantalla de la vista previa del código en Visual Studio.

  5. Reinicie el depurador.

    Esta vez, no se produce ninguna excepción. ¡Problema resuelto!

  1. Con la aplicación en pausa en la excepción, seleccione el botón Ask Copilot.

    Captura de pantalla del botón Ask Copilot dentro de una excepción.

    Si aún no está abierto, aparece la ventana Copilot Chat y proporciona una evaluación del error y por qué se produjo. En este ejemplo, Copilot identifica una corrección de código sugerida, un botón para copiar código y un botón Preview para la corrección de código.

    Si tiene preguntas sobre la excepción, hágalo en el cuadro de texto Ask Copilot.

  2. Seleccione el botón de Vista previa.

     Captura de pantalla del botón Vista previa de la ventana Copilot Chat.

    Visual Studio muestra una vista previa del código con la corrección sugerida.

  3. Revise la corrección sugerida y elija Aceptar para aplicar la sugerencia de código.

    Captura de pantalla de la vista previa del código en Visual Studio.

  4. Reinicie el depurador.

    Esta vez, no se produce ninguna excepción. ¡Problema resuelto!

Resolución autónoma de errores con el Agente de Depuración

El Agente del depurador proporciona un flujo de trabajo agente de un extremo a otro que valida los errores con el comportamiento real en tiempo de ejecución en lugar de basarse en el análisis estático. La experiencia le guía a través de un bucle agente completo: comprensión y reproducción del problema, instrumentación de la aplicación, aislamiento de la causa principal y validación de la corrección a través de la ejecución en vivo.

Puede empezar desde un problema en GitHub o Azure DevOps, o describir el error en lenguaje natural. El agente de depuración asigna el problema a su código fuente local y lo guía para resolverlo. Puede interactuar con el agente durante el proceso de depuración para aportar más información, comentar su teoría o perfeccionar la solución en tiempo real.

Para usar el agente de depuración:

  1. Abra la ventana Copilot Chat (View > GitHub Copilot Chat).
  2. Seleccione Depurador en la lista desplegable de modo en la esquina inferior izquierda de la ventana de chat.
  3. Proporcione un vínculo de un problema de GitHub o Azure DevOps, o describa el error en lenguaje natural.

Screenshot que muestra el selector de agentes con agentes personalizados en Visual Studio.

El agente del depurador funciona siguiendo los siguientes pasos:

  • Inserción de contexto : conecta el problema o la descripción del error al código fuente local.
  • Reproducdor autónomo : analiza el error y, si faltan pasos de reproducción, crea un escenario mínimo para desencadenar el error.
  • Hipótesis e instrumentación : genera hipótesis de error e instrumenta la aplicación con puntos de seguimiento y puntos de interrupción condicionales para capturar el estado en tiempo de ejecución.
  • Validación en tiempo de ejecución : ejecuta la sesión de depuración y analiza la telemetría activa para aislar la causa principal.
  • Corrección dirigida : sugiere una corrección precisa en el punto de error exacto en lugar de una refactorización amplia.
  • Validación humana final - Reinicie el escenario y confirme la corrección en el entorno en vivo junto con el agente.

Cuando el chat está en modo agente, también puede cambiar al agente del depurador mediante @debugger en el campo de entrada del chat. Para obtener más información sobre el agente del depurador y otros agentes integrados, consulte Uso de agentes integrados y personalizados con GitHub Copilot.

Obtención de sugerencias con puntos de interrupción condicionales y puntos de seguimiento

Copilot proporciona sugerencias para puntos de interrupción condicionales y tracepoints que son específicos de tu código.

En este ejemplo, se muestran sugerencias de IA para un punto de interrupción condicional. En el caso de los puntos de seguimiento, la asistencia de IA funciona de la misma manera.

  1. Para quitar el punto de interrupción actual, haga clic en él o haga clic con el botón derecho y elija Eliminar punto de interrupción.

  2. Agregue la línea de código siguiente:

    names.Add("Major Major Major");
    

    por este:

    // names.Add("Major Major Major");
    foreach (var item in args)
    {
       names.Add("Name: " + item);
    }
    
  3. A la izquierda de la instrucción names.Add("Name: " + item), haga clic con el botón derecho en el margen y elija Insertar punto de interrupción condicional.

  4. Seleccione el campo de expresión y Copilot empiece a trabajar en sugerencias.

    Captura de pantalla de Copilot que está trabajando en sugerencias para puntos de interrupción condicionales.

  1. Cuando aparezcan las sugerencias, elija una, como item == "Test". Edite la sugerencia para que el nombre sea Fred.

    Captura de pantalla de una sugerencia de Copilot para un punto de interrupción condicional.

  1. Cuando aparezcan las sugerencias, elija una como item == "John". Edite la sugerencia para que el nombre sea Fred.

    Captura de pantalla de la sugerencia de Copilot del punto de interrupción condicional.

  1. Para probar la expresión condicional:

    1. Haga clic con el botón derecho en el proyecto ConsoleApp_Copilot en Solution Explorer y elija Properties.

    2. Seleccione Depurar>General>Abrir la interfaz de usuario de perfiles de inicio de depuración.

    3. En el campo Argumentos de línea de comandos, escriba 5 Fred Joe, en tres líneas independientes.

      Captura de pantalla de la introducción de argumentos de línea de comandos para el proyecto.

    4. Reinicie el depurador.

    Cuando el depurador se pausa en el punto de interrupción, compruebe el valor de item y asegúrese de que el valor actual sea Fred.