【发布时间】:2018-08-26 01:22:51
【问题描述】:
在第 2 帧 kernel32!WaitForMultipleObjects+0x19 中,win32 API 调用正在等待多个对象/句柄。
-
在 Windbg 中,我们如何确定这个特定帧的句柄?
0:012> k # ChildEBP RetAddr 00 093ffba0 7510285f ntdll!NtWaitForMultipleObjects+0xc 01 093ffd2c 76f89188 KERNELBASE!WaitForMultipleObjectsEx+0xcc 02 093ffd48 61006516 kernel32!WaitForMultipleObjects+0x19 03 093ffd80 610065b0 mshtml!CRenderThread::WaitForWork+0x82 04 093ffdc4 61130503 mshtml!CRenderThread::RenderThread+0x2b0 05 093ffdd4 6d363a31 mshtml!CRenderThread::StaticRenderThreadProc+0x23 06 (Inline) -------- IEShims!NS_CreateThread::ThreadProc+0x86 07 093ffe0c 76f8919f IEShims!NS_CreateThread::DesktopIE_ThreadProc+0x94 08 093ffe18 776ead8f kernel32!BaseThreadInitThunk+0xe 09 093ffe60 776ead5a ntdll!__RtlUserThreadStart+0x2f 0a 093ffe70 00000000 ntdll!_RtlUserThreadStart+0x1b **//Arguments passed in function call : kernel32!WaitForMultipleObjects+0x19** 0:012> dd 093ffd48 093ffd48 093ffd80 61006516 **00000002 093ffd6c** 093ffd58 **00000000 ffffffff** 00000000 00000000 093ffd68 05ef6078 00000778 000007c8 00000002 093ffd78 ffffffff 093ffdc4 093ffdc4 610065b0 093ffd88 093ffde0 00000000 00000006 61015990 093ffd98 1b541170 00000000 00000000 00000000 093ffda8 00000000 00000000 00000000 1b541170 093ffdb8 00000000 05ef6078 003ffdd4 093ffdd4
【问题讨论】:
-
WaitForMultipleObjects(00000002) 的第一个参数是句柄数,第二个参数 (093ffd6c) 是指向这些句柄的指针。您可以使用dd 093ffd6c L2打印它们。 -
为了让这些信息一目了然,请使用
kv。 -
在 32 位上,
kb打印包含参数的堆栈。没有必要摆弄自己。另外,我建议使用dp而不是dd- 您可能要切换到64 位,所以知道dp会很有帮助。但是请注意,kb由于调用约定的更改而停止在 64 位上工作。
标签: windbg window-handles