es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo ver las trazas de pila asíncronas mientras depuro una aplicación .NET en Visual Studio?

Estoy tratando de determinar la causa de una posible fuga de memoria en una aplicación compleja basada en C#. Como no puedo depurar el problema en tiempo de ejecución debido a que el sistema se vuelve muy lento e inestable debido al alto uso de CPU y memoria de la aplicación, creé un archivo de volcado (dmp) de la aplicación a través del administrador de tareas durante la ejecución y luego abrí ese volcado para un análisis adicional en mi instancia local de Visual Studio 2022. Cuando intento ver los hilos de la aplicación en el momento en que se creó el volcado, solo me muestra la pila de llamadas hasta donde se ejecuta algo de forma asíncrona. Todo lo que sucede dentro de esta ejecución asíncrona parece imposible de acceder. En la pila de llamadas simplemente aparece que está esperando un proceso asíncrono y que debo hacer doble clic o presionar enter para mostrar las pilas de llamadas asíncronas. Sin embargo, esto no parece hacer nada. ¿Me estoy perdiendo algo o cómo puedo ver lo que está sucediendo dentro del proceso asíncrono?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás experimentando dificultades al analizar una ejecución asíncrona en una aplicación basada en C# debido al alto uso de CPU y memoria. Para solucionar el problema, has creado un archivo de volcado (dmp) de la aplicación a través del administrador de tareas en tiempo de ejecución y ahora deseas analizarlo en Visual Studio 2022. Sin embargo, no puedes ver los hilos de la aplicación más allá del punto donde se ejecuta el proceso asíncrono, y la pila de llamadas solo muestra que está esperando al proceso asíncrono.

    Para analizar una ejecución asíncrona en el archivo de volcado, debes habilitar el seguimiento de la pila de llamadas asíncronas en Visual Studio. Para hacer esto, ve a Depurar > Opciones > Depuración > General, y asegúrate de que las opciones “Habilitar solo mi código” y “Habilitar paso de origen del marco de trabajo .NET” estén desmarcadas. Luego, ve a Depurar > Ventanas > Módulos, encuentra el módulo de tu aplicación y haz clic derecho sobre él para seleccionar “Cargar símbolos” e “Información de carga de símbolos” para asegurarte de que los símbolos se carguen correctamente.

    Una vez cargados los símbolos, puedes ver las pilas de llamadas asíncronas haciendo doble clic en el mensaje “esperando a lo asíncrono” en la ventana de la pila de llamadas, o presionando Enter en el teclado cuando el mensaje esté resaltado. Esto te mostrará las pilas de llamadas asíncronas, lo que puede ayudarte a identificar la fuente de la fuga de memoria.

    Si aún no puedes ver las pilas de llamadas asíncronas o identificar la fuente de la fuga de memoria, es posible que necesites investigar más con herramientas como PerfView, WinDbg o las herramientas de diagnóstico de memoria de Visual Studio.

Comments are closed.