Windows – 使用用户模式转储确定WinDbg中的线程等待时间

WinDbg有什么办法可以确定,由于什么日期/时间Windows线程被诸如WaitForSingleObjects或WaitForMultipleObjects之类的函数阻止?

我知道如何在内核调试(使用!线程)中执行此操作,但我不知道如何在用户模式调试中执行此操作.

最佳答案
在WinDbg中,您可以使用!runaway获取线程时间:

!runaway
!runaway 1

(用户时间)

!runaway 2

(内核时间)

!runaway 4

(经过时间)

(你会发现这些记录为0,1和2的一些地方,但在我的经验中,这些不起作用,也许取决于WinDbg版本或某事…)

您可以通过从经过的时间减去线程的用户和内核时间来计算暂停的时间,但不幸的是,我不知道任何方式(不写WinDbg插件)以使WinDbg为您做.

如果您没有设置WinDbg,您可以使用Process Explorer获取相同的信息.当您右键单击一个进程并选择属性对话框中的线程选项卡时,您将获取进程中所有线程的列表.选择特定的线程将显示相同的时间信息,等等.

转载注明原文:Windows – 使用用户模式转储确定WinDbg中的线程等待时间 - 代码日志