Inspección de variables en el depurador de Visual Studio
Las características que permiten inspeccionar variables son algunas de las características más útiles del depurador y hay diferentes maneras de hacerlo. A menudo, al intentar depurar un problema, intenta averiguar si las variables almacenan los valores que espera que tengan en un estado de aplicación determinado.
En este artículo, aprenderá a inspeccionar variables mediante el depurador en Visual Studio. El depurador de Visual Studio proporciona varias maneras cómodas de ver los valores de las variables durante la depuración, incluidos los siguientes:
- Ventanas de inspección de variables (ventanas Automático, Variables locales e Inspección)
- Sugerencias de datos en el editor de código
- Valores devueltos insertados
- Visualizadores para cadenas grandes o objetos .NET complejos
Estas características solo están disponibles durante la depuración. Para obtener información sobre cómo iniciar una sesión de depuración, consulte Iniciar la depuración y entrar en modo de interrupción.
Nota
Si es la primera vez que ha intentado depurar código, es posible que quiera leer Depuración para Principiantes Absolutos y Técnicas y Herramientas de Depuración antes de continuar con este artículo.
Inspección de variables en las ventanas Automático y Variables locales
Las ventanas Automático y Variables locales muestran valores de variables durante la depuración. Las ventanas solo están disponibles durante una sesión de depuración. La ventana Autos muestra las variables utilizadas en torno a la declaración actual donde el depurador está pausado. La ventana Variables locales muestra las variables definidas en el ámbito local, que suele ser la función o el método actuales.
Para abrir la ventana Automático, seleccione Depurar>Ventanas>Automático, o bien presione Ctrl+Alt+V>A durante la depuración.
La ventana de Autos está disponible para los lenguajes de código C#, Visual Basic, C++, y Python, pero no para JavaScript o F#.
Para abrir la ventana Variables locales, seleccione Depurar>Ventanas>Variables locales, o bien presione Alt+4 durante la depuración.
Las matrices y los objetos se muestran en las ventanas Autos y Locales como controles de árbol. Seleccione la flecha situada a la izquierda de un nombre de variable para expandir la vista para mostrar campos y propiedades. Este es un ejemplo de un objeto System.IO.FileStream en la ventana de variables locales:
Un valor rojo en la ventana Locales o Automático significa que el valor ha cambiado desde la última evaluación. El cambio podría provenir de una sesión de depuración anterior, o podría ser porque usted ha cambiado el valor en la ventana.
El formato numérico predeterminado en las ventanas del depurador es decimal. Para cambiarlo a hexadecimal, haga clic con el botón derecho en la ventana Variables locales o Automático, y seleccione Presentación hexadecimal. El cambio afecta a todas las ventanas del depurador.
Editar valores de variable en la ventana Autos o Variables locales
Para editar los valores de la mayoría de las variables en las ventanas de Automático o Variables locales, haga doble clic en el valor y escriba el nuevo valor.
Puede escribir una expresión para un valor, por ejemplo, a + b
. El depurador acepta la mayoría de las expresiones de lenguaje válidas.
En el código nativo de C++, es posible que tenga que calificar el contexto de un nombre de variable. Para obtener más información, vea Operador de contexto (C++).
Cautela
Asegúrese de comprender las consecuencias antes de cambiar los valores y expresiones. Algunos problemas posibles son:
Evaluar algunas expresiones puede cambiar el valor de una variable o afectar de otro modo al estado del programa. Por ejemplo, evaluar
var1 = ++var2
cambia el valor devar1
yvar2
. Se dice que estas expresiones tienen efectos secundarios. Los efectos secundarios pueden causar resultados inesperados si no los conoce.La edición de valores de punto flotante puede dar lugar a errores menores debido a la conversión decimal a binaria de componentes fraccionarios. Incluso una edición aparentemente inofensiva puede dar lugar a cambios en algunos de los bits de la variable de punto flotante.
Búsqueda en las ventanas Automático o Variables locales
Puede buscar palabras clave en las columnas Nombre, Valor y Tipo de la ventana Autos o de la ventana Locals mediante la barra de búsqueda situada encima de cada ventana. Presione ENTRAR o seleccione una de las flechas para ejecutar una búsqueda. Para cancelar una búsqueda en curso, seleccione el icono "x" en la barra de búsqueda.
Use las flechas izquierda y derecha (Mayús+F3 y F3, respectivamente) para desplazarse por las coincidencias encontradas.
Para que la búsqueda sea más o menos exhaustiva, use la lista desplegable Búsqueda más profunda en la parte superior de la ventana Automóviles o Locales para seleccionar cuántos niveles de profundidad desea buscar en objetos anidados.
Anclaje de propiedades en la ventana Automático o Variables locales
Nota
Esta característica es compatible con .NET Core 3.0 o superior.
Puede inspeccionar rápidamente objetos por sus propiedades en las ventanas Automático y Variables locales con la herramienta para anclar propiedades. Para usar esta herramienta, mantenga el puntero sobre una propiedad y seleccione el icono Anclar que aparece o haga clic con el botón derecho y seleccione la opción Anclar miembro como favorito en el menú contextual resultante. Esta acción eleva esa propiedad a la parte superior de la lista de propiedades, y el nombre y el valor de la propiedad se muestran en la columna Valor. Para desanclar una propiedad, vuelva a seleccionar el icono para anclar o seleccione la opción Desanclar miembro como favorito en el menú contextual.
También puede alternar los nombres de propiedades y filtrar las no ancladas al consultar la lista de propiedades del objeto en las ventanas Automático o Variables locales. Puede acceder a cada opción seleccionando los botones de la barra de herramientas encima de las ventanas de Autos o Locales.
Cambio del contexto de la ventana Automático o Variables locales
Puede usar la barra de herramientas Ubicación de depuración para seleccionar la función, el subproceso o el proceso que quiera, lo que cambia el contexto de las ventanas Automático y Variables locales.
Para habilitar la barra de herramientas Ubicación de depuración, haga clic en una parte vacía del área de la barra de herramientas y seleccione Ubicación de depuración en la lista desplegable, o bien seleccione Ver>Barras de herramientas>Ubicación de depuración.
Establezca un punto de interrupción e inicie la depuración. Cuando se alcanza el punto de interrupción, la ejecución se pausa y puede verse la ubicación en la barra de herramientas Ubicación de depuración.
Diferencias de idioma en la ventana Autos (C#, C++, Visual Basic, Python)
Los distintos lenguajes de código muestran diferentes variables en la ventana de Autos.
En C# y Visual Basic, la ventana Autos muestra cualquier variable utilizada en la línea actual o en la línea anterior. Por ejemplo, en código de C# o Visual Basic, declare las cuatro variables siguientes:
public static void Main() { int a, b, c, d; a = 1; b = 2; c = 3; d = 4; }
Configura un punto de interrupción en la línea
c = 3;
e inicia el depurador. Cuando se pausa la ejecución, la ventana Autos se mostrará:El valor de
c
es 0, porque la líneac = 3
aún no se ha ejecutado.En C++, la ventana Autos muestra las variables usadas en al menos tres líneas antes de la línea actual donde se detiene la ejecución. Por ejemplo, en el código de C++, declare seis variables:
void main() { int a, b, c, d, e, f; a = 1; b = 2; c = 3; d = 4; e = 5; f = 6; }
Establezca un punto de interrupción en la línea
e = 5;
y ejecute el depurador. Cuando la ejecución se detenga, se mostrará la ventana Automático:La variable
e
no está inicializada, porque la líneae = 5
aún no se ha ejecutado.
Ver sugerencias de datos
A menudo, al depurar, necesita una forma rápida de comprobar los valores de propiedad de los objetos en el editor de código y la información sobre datos es una buena forma de hacerlo. Para obtener información detallada sobre el uso de sugerencias de datos, consulte Ver valores de datos en sugerencias de datos.
Cuando el depurador está pausado, pase el ratón sobre un objeto y verá su valor o su valor de propiedad predeterminado.
Si la variable tiene propiedades, puede expandir el objeto para ver todas sus propiedades.
Establecimiento de una inspección de variables
Puede usar una ventana Inspección para especificar una variable (o una expresión) que quiera supervisar. Para obtener más información, vea Establecimiento de una inspección con las ventanas Inspección e Inspección rápida.
Mientras depura, haga clic con el botón derecho en un objeto y elija Agregar inspección.
En este ejemplo, se ha establecido una inspección para el objeto y puede ver cómo cambia su valor conforme avanza en el depurador. A diferencia de las otras ventanas de variables, en la ventana Inspección siempre se muestran las variables que ve (y se atenúan cuando están fuera del ámbito).
Visualización de valores devueltos de llamadas de método
En el código de .NET y C++, puede examinar los valores devueltos en la ventana Autos cuando se avanza o se sale de una llamada de método, lo que puede ser útil cuando el valor devuelto no se almacena en una variable local. Un método se puede usar como parámetro o como valor devuelto de otro método.
A partir de la versión 17.12 Preview 3 de Visual Studio 2022, también puede ver los valores devueltos de las llamadas de método en línea y no solo en la ventana Autos.
Con Copilot habilitado, también puede obtener asistencia específica relacionada con el valor de retorno en línea mediante el botón Preguntar a Copilot que aparece en la sugerencia de datos para el valor de retorno.
Visualización de valores devueltos en la ventana Automático
En el ejemplo siguiente, este código de C# agrega los valores devueltos de dos funciones:
static void Main(string[] args)
{
int a, b, c, d;
a = 1;
b = 2;
c = 3;
d = 4;
int x = sumVars(a, b) + subtractVars(c, d);
}
private static int sumVars(int i, int j)
{
return i + j;
}
private static int subtractVars(int i, int j)
{
return j - i;
}
Para ver los valores devueltos de las llamadas de método sumVars()
y subtractVars()
en la ventana Automático:
Establezca un punto de interrupción en la línea
int x = sumVars(a, b) + subtractVars(c, d);
.Inicie la depuración y, cuando la ejecución se pause en el punto de interrupción, seleccione Paso a paso por procedimientos o presione F10. Deberían mostrarse los siguientes valores devueltos en la ventana Automático:
Inspección de variables en un visualizador
Mientras estás depurando en Visual Studio, puedes ver cadenas grandes u objetos complejos con visualizadores integrados que hacen que los datos sean más fáciles de inspeccionar. Por ejemplo:
- El visualizador de cadenas muestra cadenas de texto, XML, HTML y JSON que son demasiado largas para una ventana de información o depurador de datos. También puede ayudarle a identificar cadenas malformadas. Para obtener más información, vea Ver cadenas en un visualizador de cadenas.
- Los visualizadores DataSet e IEnumerable muestran objetos de colección .NET en un visualizador tabular. Para más información, vea Visualizadores tabulares en objetos de Visual Studio.
Los visualizadores aparecen en las ventanas Automático y en otras ventanas del depurador.
Nota
Si tiene que inspeccionar elementos de interfaz de usuario de WPF o XAML en un visualizador, vea Inspección de las propiedades XAML durante la depuración o Procedimiento para usar el visualizador de árboles de WPF.
Para abrir el visualizador, la depuración debe estar en pausa. Mantenga el puntero sobre una variable que tenga un valor de visualizador compatible y seleccione el icono de lupa .
Abrir visualizador de cadenas
Abrir visualizador de cadenas
Obtención de ayuda para la inteligencia artificial
Si tiene Copilot, puede obtener asistencia de IA mientras examina las variables en las ventanas Automático o Variables locales, o en sugerencias de datos. Haga clic con el botón derecho en una variable y use el botón Preguntar a Copilot. En este escenario, Copilot ya conoce el contexto de su pregunta, por lo que no es necesario proporcionar contexto en el chat. Para obtener más información, consulte Depurar con Copilot.