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.
Mediante la ventana Pila de llamadas, puede ver las llamadas a las funciones o procedimientos que están actualmente en la pila. En la ventana Pila de llamadas se muestra el orden en el que se llama a los métodos y las funciones. La pila de llamadas es una buena manera de examinar y comprender el flujo de ejecución de una aplicación.
Cuando no haya símbolos de depuración disponibles para una parte de una pila de llamadas, la ventana Pila de llamadas podría no mostrar información correcta para esa parte de la pila de llamadas:
[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]
Nota
Los cuadros de diálogo y los comandos de menú que vea pueden diferir de los descritos aquí, según la configuración activa o la edición. Para cambiar la configuración, seleccione Configuración de importación y exportación en el menú Herramientas. Consulte Restablecer todas las configuraciones. La ventana Pila de llamadas es similar a la perspectiva de depuración de algunos IDE, como Eclipse.
Ver la pila de llamadas mientras está en el depurador
Durante la depuración, en el menú Depuración, seleccione Ventanas > Pila de llamadas o presione ctrl+alt+C.
Nota
La opción de menú Depurar > pila de llamadas de Windows > solo está disponible durante una sesión de depuración activa. Inicie primero la depuración (por ejemplo, presionando F5 o seleccionando Depurar Iniciar depuración>) y, a continuación, pausa la ejecución en un punto de interrupción antes de abrir la ventana Pila de llamadas.
Una flecha identifica el marco de pila donde se encuentra actualmente el puntero de ejecución. De forma predeterminada, la información de este marco de pila aparece en las ventanas del origen Variables locales, Automático, Ver y Desensamblado. Para cambiar el contexto del depurador a otro marco en la pila, cambie a otro marco de pila.
Una flecha identifica el marco de pila donde se encuentra actualmente el puntero de ejecución. De forma predeterminada, la información de este marco de pila aparece en las ventanas del origen Variables locales, Automático, Ver y Desensamblado. Para cambiar el contexto del depurador a otro marco en la pila, cambie a otro marco de pila.
También puede ver los marcos de pila de excepciones en la pila de llamadas durante la depuración. Para más información, consulte Visualización de la pila de llamadas en el asistente de excepciones.
Análisis de la pila de llamadas con Copilot
Puede obtener un análisis con tecnología de IA del estado de depuración actual en el contexto de la Ventana de Pila de Llamadas. Esta característica ayuda a responder a la pregunta: ¿Qué hace mi subproceso o aplicación ahora mismo? Con un solo clic, el botón Analizar con Copilot envía el estado de depuración actual a Copilot, abriendo la ventana Chat con un análisis de estado de la aplicación, no es necesario describir manualmente el contexto de depuración.
Antes de usar esta función, asegúrese de que Copilot esté habilitado y de que la aplicación esté en pausa en el depurador.
Para analizar la pila de llamadas:
- Cuando Copilot identifica un problema de pila de llamadas, como un marco que está esperando una tarea asincrónica o falla la ejecución durante las operaciones asincrónicas, Copilot muestra el botón Analizar con Copilot junto al marco pertinente, en la ventana Pila de llamadas.
- Seleccione Analizar con Copilot.
Copilot comprende tanto las pilas de llamadas sincrónicas como las asincrónicas y anota los cuadros relevantes. Puede analizar el marco para obtener una explicación clara de:
- Por qué la ejecución está en pausa
- ¿A qué espera el subproceso?
- Cómo llegó la ejecución al punto actual
Esto transforma la pila de llamadas de una lista estática de marcos a una experiencia de depuración interactiva. En lugar de reconstruir manualmente los flujos asincrónicos, Copilot le ayuda a comprender rápidamente el comportamiento en tiempo de ejecución y volver para corregir el problema real.
Para obtener más información sobre la depuración con Copilot, consulte Depurar la aplicación con GitHub Copilot.
Mostrar código que no es de usuario en la ventana Pila de llamadas
Para mostrar código externo o no de usuario, active el botón Mostrar código externo de la barra de herramientas de la pila de llamadas o haga clic con el botón derecho en la ventana Pila de llamadas y seleccione Mostrar código externo.
El código que no es de usuario es cualquier código que no se muestra cuando se habilita Solo mi código. En el código administrado, los marcos de código que no son de usuario se ocultan de forma predeterminada. La notación siguiente aparece en lugar de los marcos de código que no son de usuario:
[<External Code>]
Mostrar código externo cuando necesite comprender las transiciones entre el código y el marco o el código en tiempo de ejecución, como:
- rastreo de donde una excepción cruza los límites del framework
- comprensión de las rutas de devolución de llamada y despacho de eventos
- identificar dónde el control regresa del código de la biblioteca a tu código
Cambiar a otro marco de pila (cambiar el contexto del depurador)
Cambiar de marco es útil cuando se desea inspeccionar las variables locales, los argumentos y el origen de una llamada anterior sin cambiar el punto de ejecución actual.
En la ventana Pila de llamadas, haga clic con el botón derecho en el marco cuyo código y datos quiera ver.
Si lo prefiere, puede hacer doble clic en un marco en la ventana Pila de llamadas para cambiar a ese marco.
Seleccione Cambiar a marco.
Aparece una flecha verde con una cola curvada junto al marco de pila seleccionado. El puntero de ejecución permanece en el marco original, que sigue marcado con la flecha amarilla. Si selecciona Paso o Continuar en el menú Depurar, la ejecución continuará en el marco original, no en el seleccionado.
Ver todos los hilos relacionados
Activa el botón Ver todos los subprocesos para ver todos los subprocesos relacionados en la ventana de pila paralela. La ventana Pilas paralelas visualiza pilas de llamadas para aplicaciones multiproceso.
Use esta vista cuando un punto de interrupción pueda verse afectado por el trabajo en otros subprocesos, como bloqueos, continuaciones asincrónicas o devoluciones de llamada del grupo de subprocesos.
Búsqueda de la pila de llamadas
Puede buscar marcos de pila de llamadas escribiendo términos en el cuadro de búsqueda del área superior izquierda de la ventana Pila de llamadas .
La búsqueda es útil para encontrar rápidamente un método, un módulo o un espacio de nombres en estructuras de pila profundas. Los fotogramas coincidentes se resaltan para que pueda saltar a las partes pertinentes de la pila más rápido.
Ver el código fuente de una función de la pila de llamadas
En la ventana Pila de llamadas, haga clic con el botón derecho en la función cuyo código fuente quiera ver y seleccione Ir a código fuente.
Ejecutar una función concreta desde la ventana Pila de llamadas
En la ventana Pila de llamadas, seleccione la función, haga clic con el botón derecho y, después, elija Ejecutar hasta el cursor.
Use este comando cuando desee continuar rápidamente con un marco conocido sin pasar por todas las llamadas intermedias.
Establecimiento de un punto de interrupción en el punto de salida de una llamada de función
Consulte Establecer un punto de interrupción en una función de pila de llamadas.
Mostrar llamadas a o desde otro subproceso
Haga clic con el botón derecho en la ventana Pila de llamadas y seleccione Incluir llamadas a otros subprocesos o desde estos.
Use esta opción para revelar relaciones entre subprocesos al diagnosticar la transferencia de tareas entre subprocesos de trabajo, subprocesos de la interfaz de usuario o continuaciones de tareas.
Hacer un seguimiento visual de la pila de llamadas
En Visual Studio Enterprise (solo), puede ver los mapas de código de la pila de llamadas durante la depuración.
En la ventana Pila de llamadas, abra el menú contextual. Elija Mostrar pila de llamadas en mapa de código (Ctrl + Mayús + `).
Para más información, vea Asignar métodos en la pila de llamadas durante la depuración.
Ver el código de desensamblado de una función en la pila de llamadas (C#, C++, Visual Basic, F#)
En la ventana Pila de llamadas, haga clic con el botón derecho en la función cuyo código de desensamblado quiera ver y seleccione Ir al desensamblado.
Cambiar la información opcional mostrada
Haga clic con el botón derecho en la ventana Pila de llamadas y establezca o desactive Mostrar <la información que desee>.
Use estas opciones para personalizar los detalles del marco para que la pila resalte la información que le interesa durante la investigación.
Autodescompilar código externo de .NET
A partir de la versión 17.7 de Visual Studio 2022, puede compilar automáticamente código .NET haciendo doble clic en código externo en la ventana Pila de llamadas. Para obtener más información, consulte Generación de código fuente a partir de ensamblados .NET durante la depuración.
Cargar símbolos para un módulo (C#, C++, Visual Basic, F#)
En la ventana Pila de llamadas, puede cargar los símbolos de depuración para el código que todavía no los tenga cargados. Estos símbolos pueden ser símbolos de .NET, símbolos del sistema descargados de los servidores de símbolos públicos de Microsoft, o símbolos en una ruta de acceso de símbolos en el equipo que está depurando.
Consulte Specify symbol (.pdb) and source files (Especificación de símbolo (.pdb) y archivos de origen).
Para cargar símbolos
En la ventana Pila de llamadas, haga clic con el botón derecho en el marco para el cual no están cargados los símbolos. El marco estará oscurecido.
Seleccione Cargar símbolos y, después, seleccione Servidores de símbolos de Microsoft (si está disponible) o vaya a la ruta de acceso de símbolos.
Para configurar la ruta de acceso de símbolos
En la ventana Pila de llamadas, elija Configuración de símbolos en el menú contextual.
Se abre el cuadro de diálogo Opciones y se muestra la página Símbolos.
Seleccione Configuración de símbolos.
En el cuadro de diálogo Opciones, haga clic en el icono de carpeta.
En el cuadro Ubicaciones del archivo de símbolos (.pdb), aparece un cursor.
Escriba un nombre de ruta de acceso del directorio a la ubicación de los símbolos en el equipo que está depurando. Para la depuración local y remota, se trata de una ruta de acceso en el equipo local.
Seleccione Aceptar para cerrar el cuadro de diálogo Opciones.