¿Cómo puedo rastrear/perfilar un proceso en Windows?

¿Cómo puedo rastrear/perfilar un proceso en Windows?

De vez en cuando, cuando investigo problemas de SQL Server, encuentro útil poder conectarle el depurador de Visual Studio e intentar descubrir qué está haciendo mirando la pila de llamadas (los símbolos públicos están disponibles y, a menudo, es posible inferir información útil). información de los nombres de los métodos).

Un gran ejemplo del tipo de información interna que se puede inferir esen esta publicación de blogque inspiró mis intentos.

Sin embargo, este puede ser un proceso tedioso y que requiere bastante tiempo. Generalmente ejecuto el código de interés en un bucle, adjunto el depurador, luego lo interrumpo continuamente y continúo hasta que llego a una pila de llamadas que parece interesante para el asunto que se está investigando. Luego puedo recorrer el código y ver los nombres de los métodos que se llaman. Sin embargo, esto lleva años.

¿Hay alguna forma de automatizar esto para poder simplemente registrar todos los métodos llamados durante un período corto y luego revisar el archivo de registro?

Respuesta1

Si no me equivoco, probablemente esté buscando Process Monitor (también conocido como procmon). Puedes obtenerlo deeste sitio web de Microsoft.

Específicamente, la opción de menú "Resumen de pila" tiene este tipo de información. Más detalles en la secciónPM2-6: Desenrollar la pila

ingrese la descripción de la imagen aquí

Respuesta2

Elperfiladoren versiones superiores de Visual Studio se puede utilizar para hacer esto.

Salida de ejemplo

Captura de pantalla

(Yla respuesta aquímuestra por qué esto es útil)

O adicionalmente elKit de herramientas de rendimiento de Windowses gratis y también puede hacer lo mismo y más. Puede encontrar una buena serie de vídeos sobre esto enhttps://channel9.msdn.com/Search?term=Defrag%20tools%20wpt#ch9Search

información relacionada