【发布时间】:2012-01-21 07:33:55
【问题描述】:
我有 .NET 可执行文件,它在单独的 AppDomain 中托管插件。 有时在应用程序使用期间,其中一个插件会锁定文件并防止其移动或删除。
我需要找出谁拥有文件句柄?
问题是间歇性的,难以重现。有5个插件。 禁止插件访问这些文件或杀死句柄(就像 Unlocker 一样)不是解决方案。
我试过了:
首先,Sysinternals - 但它只显示持有具有指定名称的文件的进程。
其次,如有关 WinDbg 的文章和文档中所述,我可以使用 !process 和 !handle,但可以使用下一个:
0:001> !process
No export process found
0:001> !handle 314 ff 123
Unknown type '123
我可以使用带有较少参数的 !handle,但我的版本(出于未知原因)甚至没有像 Debug Tutorial Part 5: Handle Leaks 那样显示文件名。我的可执行文件引用了 100 个文件。 我想深入了解 WinDbg 的方向,但由于某种原因,它是从 Windows 7 SDK 安装的,其功能与文档中所述的不同,这妨碍了我进一步调查?
我有:
WinDbg 6.12.0002.633 x86(我的进程是32位)
Windows 7 SP1 x64
【问题讨论】:
标签: .net windows file debugging windbg