在WinDbg中是否有任何方法可以确定Windows线程被WaitForSingleObjects
或WaitForMultipleObjects
等函数阻止的日期/时间?
我知道如何在内核调试中执行此操作(使用!thread
),但我不知道如何在用户模式调试中执行此操作。
答案 0 :(得分:8)
在WinDbg中,您可以使用!runaway
来获取线程时间:
!runaway
!runaway 1
(用户时间)
!runaway 2
(内核时间)
!runaway 4
(经过时间)
(你会发现这些记录为0,1和2的一些地方,但根据我的经验,那些不起作用。也许它取决于WinDbg版本或其他东西......)
你可以通过从经过的时间中减去线程的用户和内核时间来计算暂停所花费的时间,但不幸的是我不知道有什么办法(没有编写WinDbg插件)让WinDbg为你做这件事。
如果您未设置WinDbg,则可以使用Process Explorer获取相同的信息。右键单击某个进程并在属性对话框中选择“线程”选项卡时,将获得该进程中所有线程的列表。选择特定线程将显示相同的时间信息等。