确定已分配的“句柄”类型

时间:2012-02-16 21:33:12

标签: c# winapi user-interface mfc

我正在调试我怀疑是在泄漏win32句柄的应用程序。任务管理器报告该应用程序已分配了大约5000个句柄。

使用任务管理器,我计算了GDI和用户对象,发现数字为350和73.我使用“GetGuiResources”函数验证了这个计数。

使用ProcessExplorer,我看了一下底部窗格中的打开句柄。列出了一些文件句柄和DLL,但不是5000。

如何确定5000个已分配句柄的类型?他们来自哪里?

1 个答案:

答案 0 :(得分:3)

将WinDbg附加到流程并输入

!handle

它会在最后打印出句柄列表和摘要。例如:


>!handle
 ... 
Handle c28
  Type          File
Handle c2c
  Type          Section
Handle c30
  Type          File
Handle c34
  Type          Event
Handle c44
  Type          Event
Handle c48
  Type          File
Handle c4c
  Type          Section
Handle c50
  Type          File
636 Handles
Type            Count
None            10
Event           267
Section         126
File            132
Directory       2
Mutant          16
WindowStation   2
Semaphore       3
Key             17
Thread          37
Desktop         1
IoCompletion    3
Timer           3
KeyedEvent      1
TpWorkerFactory 16