检查调试句柄泄漏
?Windows任務管理查看句柄數
任務管理–>查看–>選擇列–>勾選“句柄數”
process explorer查看句柄詳細信息
process explorer 中雙擊指定進程打開進程的properties窗口,切換到performance標簽頁,可以看到比任務管理器更詳細的統計數據。
包括Handles/peak Handles/GDI Handles/USER Handles,peak Handles是句柄占用的峰值。據說Handles直接操作文件,注冊表這類東西;而GDI Handles與USER Handles操作的是可見的東西。
Ctrl+H或通過工具欄打開下部窗格并切換到view handles查看句柄詳情,找到泄漏的句柄詳情。
使用Windbg檢查調試句柄泄漏
Windbg提供了強大的擴展命令!htrace,即句柄跟蹤(Handle Trace),可以通過操作系統來跟蹤所有打開句柄或關閉句柄的調用以及相應的?;厮?#xff0c;在Windbg輸入”!htrace -?”,可以查看命令幫助。
1.運行目標程序,將Windbg附加到這個進程上。
2.然后在Windbg中輸入”!htrace -enable”來開啟?;厮?#xff0c;然后通過g命令來運行被調試的程序。
3.執行程序完畢后,在Windbg中運行”!htrace -diff”來自動篩選出沒有CLOSE的句柄的棧回溯信息
4.使用lsa 指令找到對應的代碼,lsa handlew2!fun4+0x0000006f
還可以中斷進程后,使用!htrace -snapshot命令,獲得此時進程句柄的鏡像,再次運行后使用”!htrace -diff”篩選。
gflags.exe工具可用來打開windows自帶的一些調試選項輔助調試。
轉載請注明出處:6san.com?
原文地址:?http://www.6san.com/1037/
總結
- 上一篇: js禁止页面滚动
- 下一篇: 最全MySQL面试题及答案