如何诊断 explorer.exe 中创建新文件夹时挂起的情况

如何诊断 explorer.exe 中创建新文件夹时挂起的情况

当我创建新文件夹时,explorer.exe 一直挂起,这个问题一直存在。

如果我使用资源监视器中的分析等待链,它会显示“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 需要一些难以获得的东西……要么是 pdb,要么是 CTL 文件,要么是 .TMF 文件。我尝试使用 Windows SDK 附带的 explorer.pdb,但没有成功。我在“命名提供程序”中没有看到 explorer.exe。我不知道在哪里可以找到 explorer.exe 的 ctl 或 .TMF 文件。

所以问题是:有没有办法从资源管理器查看 ETW 跟踪消息?

或者我是不是应该不再费心,回到那个古老的技术,一个接一个地禁用每个浏览器扩展,希望它是其中之一。(我更喜欢前者,因为我喜欢弄清楚事情的真相!!)

答案1

我不知道您是否见过,但微软的 Mark Russinovich(前 SysInternals 员工,最初编写了 Process Explorer)在他的博客上定期撰写有关使用 Sysinternals 工具诊断 Windows 问题的文章。

这个演示了他尝试追踪间歇性 Explorer 挂起的过程(这几乎肯定与您的不同,但确实展示了他使用的过程)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

答案2

我要做的第一件事是对有问题的驱动器运行 checkdisk。首先排除最简单的原因。

答案3

在 Windows 7 中,从休眠模式唤醒后,这种情况一直发生在我身上。“新建文件夹”和“重命名文件夹”都会导致 explorer.exe 长时间挂起。最终会恢复,但会破坏你所有的动力。在全新的 W7 笔记本电脑上看到这种情况有点令人沮丧。

我的解决方法:启动任务管理器,关闭 explorer.exe。任务栏将消失。文件 -> 新建任务 -> explorer.exe。任务栏应该会重新出现。关闭任务管理器

问题立即得到解决。但今晚又会再次出现……

答案4

斯科特提出的解决方案非常有效。

我在 Dell Inspiron 1564 上使用 Windows 7(64 位)。

似乎是 7 中的一个固有错误。

相关内容