我用procdump -ma abc.exe
创建了一个应用程序的内存转储。应用程序访问各种文件。
我运行!handle 0 f FILE
并获得了超过100个文件句柄。当我得到一个特定的句柄地址时,我运行以下命令!handle 000000000000161c f
,结果是:
0:000> !handle 000000000000161c f
Handle 000000000000161c
Type File
Attributes 0
GrantedAccess 0x12019f:
ReadControl,Synch
Read/List,Write/Add,Append/SubDir/CreatePipe,ReadEA,WriteEA,ReadAttr,WriteAttr
HandleCount 2
PointerCount 65479
No object specific information available
是否有机会检索实际的文件路径?就像这样:How get file path by handle in windbg?似乎只能在内核模式调试中工作。
1条答案
按热度按时间lrl1mhuk1#
对于事后调试(崩溃转储分析),没有办法,除非你有一个内核转储(我不能告诉你如何做到这一点)。Windows将关闭已终止进程的句柄。
!句柄与!Handleex
有handleex on Github
将
!handle
和!handleex
结合起来可以获得更好的信息。示例输出
!handle与SysInternals Handle组合
您可以将
!handle
WinDbg命令和SysInternals Handle tool组合使用。示例记事本调试会话:
结合控制台的信息:
自动化并不能很好地工作:
这个过程似乎太慢了,需要太多的用户输入。