Windbg中的WaitForMultipleObjects是否表示.NET应用程序中的事件存在问题?

Windbg中的WaitForMultipleObjects是否表示.NET应用程序中的事件存在问题?,.net,windbg,.net,Windbg,目前我正在修复.NET应用程序中的应用程序挂起。经过一些研究,我发现windbg可以提供应用程序挂起时发生的情况的见解 在用户系统上挂起应用程序之后,我使用windbg收集了更多信息 首先,我确定了GUI/STA线程(寻找CorExeMain) 我注意到以下几点: 0:000> k ChildEBP RetAddr 0012eb2c 7c90df2c ntdll!KiFastSystemCallRet 0012eb30 7c809574 ntdll!NtWaitForMultipleO

目前我正在修复.NET应用程序中的应用程序挂起。经过一些研究,我发现windbg可以提供应用程序挂起时发生的情况的见解

在用户系统上挂起应用程序之后,我使用windbg收集了更多信息

首先,我确定了GUI/STA线程(寻找CorExeMain)

我注意到以下几点:

0:000> k
ChildEBP RetAddr  
0012eb2c 7c90df2c ntdll!KiFastSystemCallRet
0012eb30 7c809574 ntdll!NtWaitForMultipleObjects+0xc
0012ebcc 7e4195f9 KERNEL32!WaitForMultipleObjectsEx+0x12c
0012ec28 7752ebd6 USER32!RealMsgWaitForMultipleObjectsEx+0x13e
0012ec50 77557237 ole32!CCliModalLoop::BlockFn+0x80
0012ecc4 79f9e14d ole32!CoWaitForMultipleHandles+0xcf
0012ece4 79f9e0b4 mscorwks!NT5WaitRoutine+0x51
0012ed50 79f9e018 mscorwks!MsgWaitHelper+0xa5
0012ed70 79f4c664 mscorwks!Thread::DoAppropriateAptStateWait+0x28
0012edf4 79f4c6f9 mscorwks!Thread::DoAppropriateWaitWorker+0x13c
0012ee44 79f15a68 mscorwks!Thread::DoAppropriateWait+0x40
我对windbg的经验有限,但从我进行的研究中,我得到的印象是WaitForMultipleObjects表明它可能在等待一个事件。有人能告诉我这是否是一个可能的原因吗

我收到了一些警告,这些警告让我怀疑我是否没有正确设置环境:

0012ee44 79f15a68 mscorwks!Thread::DoAppropriateWait+0x40
*** WARNING: Unable to verify checksum for C:\WINDOWS\assembly\NativeImages_v2.0.50727_32\mscorlib\6d667f19d687361886990f3ca0f49816\mscorlib.ni.dll
0012ef48 792b68af mscorwks!WaitHandleNative::CorWaitOneNative+0x156

有人能告诉我,我认为申请等待事件的想法是否有根据,或者是否有人对可能的原因或值得调查的领域有任何直接的想法

我还想知道是否值得继续关注Strike之子?

您正在查看托管线程的本机调用堆栈。这种等待是.NET内部的一部分。您可能需要深入挖掘以了解发生了什么,但您真正关心的是应用程序的托管状态

您可以通过将sos扩展加载到windbg中来实现这一点。它弥补了windbg和.NET的固有特性之间的差距

加载此扩展的命令在.NET framework的不同版本之间有所不同,但类似于:

.loadby sos clr
…或者可能

.loadby sos mscorwks
从那里,您可以使用sos提供的导出来调试.NET应用程序。首先,您需要托管调用堆栈。这应该指出代码中挂起发生的位置

!clrstack
MSDN对sos扩展提供了很好的参考。

谢谢,SOS看起来正是我需要的
.loadby sos mscorwks
!clrstack