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