2011-03-27 18 views

Respuesta

7

En WinDbg, puede utilizar !runaway para obtener tiempos de rosca:

!runaway 
!runaway 1 

(tiempo de usuario)

!runaway 2 

(tiempo kernel)

!runaway 4 

(tiempo transcurrido)

(Encontrará estos documentados como 0, 1 y 2 en algunos lugares, pero en mi experiencia esos no funcionan. Tal vez depende de la versión de WinDbg o algo ...)

Puede calcular el tiempo de suspensión suspendido restando el usuario de un hilo y el tiempo del núcleo de su tiempo transcurrido, pero desafortunadamente no sé de ninguna manera (menos de escribiendo un plugin de WinDbg) para que WinDbg haga eso por usted.

Si no está configurado en WinDbg, puede usar Process Explorer para obtener la misma información. Cuando hace clic con el botón derecho en un proceso y selecciona la pestaña de subprocesos en el cuadro de diálogo de propiedades, obtiene una lista de todos los subprocesos en el proceso. Seleccionar un hilo en particular mostrará la misma información de tiempo, entre otras cosas.

+0

Lo que realmente quería saber es: ¿desde qué fecha y hora es un hilo bloqueado por una función WaitFor *()? Perdón por la pregunta imprecisa; Ahora he cambiado "cuánto" a "desde qué fecha/hora". De todos modos, muchas gracias por su respuesta. –

+0

Por lo que sé, eso no es posible. Por supuesto, si es su propia aplicación, puede registrar la hora actual justo antes de esperar algo, luego use WinDbg para inspeccionar la variable donde la guarda, o simplemente imprimirla en un registro o algo así. –

Cuestiones relacionadas