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),可以通過作業系統來跟蹤所有開啟控制代碼或關閉控制代碼的呼叫以及相應的棧回溯,在windbg輸入」!htrace -?」,可以檢視命令幫助。
1.執行目標程式,將windbg附加到這個程序上。
2.然後在windbg中輸入」!htrace -enable」來開啟棧回溯,然後通過g命令來執行被除錯的程式。
3.執行程式完畢後,在windbg中執行」!htrace -diff」來自動篩選出沒有close的控制代碼的棧回溯資訊
4.使用lsa 指令找到對應的**,lsa handlew2!fun4+0x0000006f
還可以中斷程序後,使用!htrace -snapshot命令,獲得此時程序控制代碼的映象,再次執行後使用」!htrace -diff」篩選。
gflags.exe工具可用來開啟windows自帶的一些除錯選項輔助除錯。
6san.com
如何自動檢查記憶體洩漏和控制代碼耗盡
當程式的子模組數量和規模擴大之後,在開發階段,系統長時間允許後經常會碰到下面一些bug 針對上面的三個例子使用中的資源,我們可以歸納成兩類 數量有限的共享資源,比如上面空間有限的記憶體和數量有限的檔案控制代碼 需要獨佔的互斥資源,比如上面例子中提到的鎖。下面就分別針對這兩種情況,分別展開分析。共享資...
談」控制代碼洩漏「
洩漏 是我們寫程式的人老生常談的乙個話題。最為常見的就是記憶體洩漏 memory leak 本文介紹一種新的洩漏 控制代碼洩漏 handle leak 在windows系統的程式中,我們經常會遇到控制代碼這個詞,而且windows也抽象出了一種控制代碼型別handle。在unix系統的系統中,控制代...
談」控制代碼洩漏」
洩漏 是我們寫程式的人老生常談的乙個話題。最為常見的就是記憶體洩漏 memory leak 本文介紹一種新的洩漏 控制代碼洩漏 handle leak 在windows系統的程式中,我們經常會遇到控制代碼這個詞,而且windows也抽象出了一種控制代碼型別handle。在unix系統的系統中,控制代...