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