当我创建一个新文件夹时,我一直在使用explorer.exe挂起一些问题.
如果我在资源监视器中使用Analyze Wait Chain,则说“explorer.exe的一个或多个线程正在等待完成网络I / O”.
当我在Process Explorer中查看有问题的线程时,它没有显示任何有趣的内容:
ntdll.dll!ZwWaitForMultipleObjects+0xa KERNELBASE.dll!GetCurrentThread+0x36 kernel32.dll!WaitForMultipleObjectsEx+0xb3 USER32.dll!PeekMessageW+0x1cd USER32.dll!MsgWaitForMultipleObjectsEx+0x2a USER32.dll!MsgWaitForMultipleObjects+0x20 SHELL32.dll!SHAppBarMessage+0x41e SHELL32.dll!DragAcceptFiles+0x2a3c SHELL32.dll!DragAcceptFiles+0x2a4f SHELL32.dll!Ordinal211+0x124 SHELL32.dll!SHChangeNotification_Unlock+0x12f4 USER32.dll!GetSystemMetrics+0x2b1 USER32.dll!IsDialogMessageW+0x19b USER32.dll!IsDialogMessageW+0x1e1 ntdll.dll!KiUserCallbackDispatcher+0x1f USER32.dll!PeekMessageW+0xba USER32.dll!PeekMessageW+0x89 SHELL32.dll!SHChangeNotification_Unlock+0xd9f SHELL32.dll!Ordinal885+0x1407 SHLWAPI.dll!SHRegGetUSValueW+0x306 kernel32.dll!BaseThreadInitThunk+0xd ntdll.dll!RtlUserThreadStart+0x21
当我看到explorer.exe线程时,我确实注意到很少有人谈论ETW(Windows的事件跟踪),所以很明显explorer.exe使用了跟踪.
所以我决定尝试使用TraceView.exe来尝试监听explorer.exe跟踪.
问题是TraceView需要一些难以接受的东西…… pdbs,CTL文件和.TMF文件.我尝试使用Windows SDK附带的explorer.pdb,但是没有用.我没有在“命名提供者”中看到explorer.exe.我不知道在哪里找到explorer.exe的ctl或.TMF文件.
所以问题是:有没有办法从资源管理器中查看ETW跟踪消息?
或者我只是不打扰并回到古老的技术,一个接一个地禁用每个探险家的扩展,希望其中的一个. (更喜欢前者,因为我喜欢深入了解事物!)
我不知道你是否见过他们,但微软的Mark Russinovich(原来是最初编写Process Explorer的SysInternals)在他的博客上写了一篇关于使用Sysinternals工具诊断Windows问题的文章.
这个演示了他的过程,因为他试图追踪一个间歇性的资源管理器挂起(这几乎肯定与你的不同,但确实显示了他使用的过程)http://blogs.technet.com/markrussinovich/archive/2005/08/28/the-case-of-the-intermittent-and-annoying-explorer-hangs.aspx
他使用其他技术(包括从MS服务器中获取符号)来诊断Windows的慢速性能:http://blogs.technet.com/markrussinovich/archive/2008/09/24/3126858.aspx