Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 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:
Visual Studio 2022 version 17.8 o posterior
Inicia sesión en Visual Studio usando una cuenta de GitHub con acceso a Copilot
** Puede usar GitHub Copilot gratis. Regístrese y aproveche la inteligencia artificial para codificar de forma más rápida y eficaz.Nota
Si experimenta problemas de autenticación después de instalar la extensión, consulte Guía para resolver problemas de autenticación con GitHub Copilot Chat.
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 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
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.
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"); } }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]);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].
- Haga clic con el botón derecho en el código y elija Chat para abrir la vista Chat insertada.
- 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.
Escriba la siguiente pregunta en la vista chat en línea:
Why does the args variable have a value of string[0]?
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í).
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.
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?"
Copilot muestra una corrección sugerida para tu código.
Si desea aplicar la corrección de código, seleccione Tab.
Seleccione Alt+Delete para poder seguir aprendiendo otras características de Copilot en la sección siguiente.
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í).
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.
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?"
Copilot muestra una corrección sugerida para tu código.
Si desea aplicar la corrección de código, elija Aceptar.
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
IndexOutOfRangeExceptiony 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
Con la aplicación en pausa en excepción, seleccione el botón Analizar con Copilot.
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.
En la ventana de chat de Copilot, indique Copilot que quiere que impida el error.
Cuando Copilot sugiere una corrección en la ventana de chat, seleccione Apply.
Revise la corrección sugerida y seleccione Pestaña para aplicar la sugerencia de código.
Reinicie el depurador.
Esta vez, no se produce ninguna excepción. ¡Problema resuelto!
Con la aplicación en pausa en la excepción, seleccione el botón Ask Copilot.
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.
Seleccione el botón de Vista previa.
Visual Studio muestra una vista previa del código con la corrección sugerida.
Revise la corrección sugerida y elija Aceptar para aplicar la sugerencia de código.
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:
- Abra la ventana Copilot Chat (View > GitHub Copilot Chat).
- Seleccione Depurador en la lista desplegable de modo en la esquina inferior izquierda de la ventana de chat.
- Proporcione un vínculo de un problema de GitHub o Azure DevOps, o describa el error en lenguaje natural.
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.
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.
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); }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.Seleccione el campo de expresión y Copilot empiece a trabajar en sugerencias.
Cuando aparezcan las sugerencias, elija una, como
item == "Test". Edite la sugerencia para que el nombre seaFred.
Cuando aparezcan las sugerencias, elija una como
item == "John". Edite la sugerencia para que el nombre seaFred.
Para probar la expresión condicional:
Haga clic con el botón derecho en el proyecto ConsoleApp_Copilot en Solution Explorer y elija Properties.
Seleccione Depurar>General>Abrir la interfaz de usuario de perfiles de inicio de depuración.
En el campo Argumentos de línea de comandos, escriba
5 Fred Joe, en tres líneas independientes.
Reinicie el depurador.
Cuando el depurador se pausa en el punto de interrupción, compruebe el valor de
itemy asegúrese de que el valor actual seaFred.