• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Window上我們常見的資源泄露包括內(nèi)存和對象句柄泄露, 下面討論下對各類泄露的檢測方法。
            關(guān)于內(nèi)存泄漏,我以前寫過2篇文章: C++中基于Crt的內(nèi)存泄漏檢測, 基于WinDbg的內(nèi)存泄漏分析
            用上面提到的方法檢測泄露很多時(shí)候太麻煩,所以有時(shí)候我們會考慮用工具 VLD:

            Visual Leak Detector源于Code ProjectVisual Leak Detector - Enhanced Memory Leak Detection for Visual C++安裝包可以到 這里 下載。

            使用很簡單,基本上安裝完了就之可以直接用, 具體可以參考 這篇


            關(guān)于對象句柄泄露, 主要分GDI對象,Kernel對象,User對象:

            GDI對象只在本進(jìn)程有效,主要是指Brush, Pen,DC等, 具體可以參考 這里

            User對象只在同一Session內(nèi)有效,同一user對象在不同進(jìn)程內(nèi)值都相等,可以跨進(jìn)程使用, 主要是指Menu, window, cursor, hook等,具體可以參考 這里

            Kernel對象可以跨進(jìn)程使用,全局Kernel甚至可以跨Session, 但是因?yàn)槊總€進(jìn)程都有自己的內(nèi)核對象表,所以同一對象的句柄值(索引)在不同進(jìn)程里會不相等(盡管最終指向同一個內(nèi)核對象),主要是指各類HANDLE,具體可以參考 這里


            對于對象句柄泄露,免費(fèi)來說沒有太好的工具可以直接使用, 很多時(shí)候我們可以直接通過任務(wù)管理器來觀察各類對象的個數(shù), 如果有持續(xù)增長, 則說明有泄露存在。很多時(shí)候GDI泄露是大頭,我們要判斷哪類GDI對象正在泄露,可以考慮使用工具GDIView。(對于對象句柄泄露,誰有好的工具,可以提示下。)


            對于內(nèi)核對象泄露,我們可以考慮使用WinDbg的 !htrace 命令, 使用很簡單:通過 !htrace -enable 命令打開棧回溯, 然后通過 !htrace -snapshot 命令保存一個當(dāng)前所有句柄的快照, 最后再通過 -htrace -diff 命令獲取所有前面保存快照后打開但沒有關(guān)閉的句柄對象。


            如果公司有錢,可以考慮購買Boudcheck, 這個工具非常強(qiáng)大,可以幫我們快速的檢測出各類內(nèi)存和對象泄露,包括API的參數(shù)錯誤等。

            思考如何開發(fā)一個資源泄露檢測軟件,實(shí)際上并不復(fù)雜,主要就是API Hook, 大概過程如下:

            (1) 將代碼注入對方進(jìn)程

            (2) 通過API Hook替代系統(tǒng)資源分配和釋放相關(guān)的API, 并且記錄調(diào)用棧

            (3)最后檢測沒有釋放的資源, 生成報(bào)表


            這里有篇文章告訴你如何開發(fā)類似的工具:LeakMon - Track Handle leak, GDI Leak and Memory Leak in your Applications,
            騰訊的這篇文章也可以參考下 
            句柄泄漏檢測工具的實(shí)現(xiàn)原理

            當(dāng)然盡管原理很簡單,但是因?yàn)閃indows的API種類繁多,并且在新版本中會常有增加, 要開發(fā)一個完整的工具也不是一件容易的事情。

            posted on 2014-08-27 22:37 Richard Wei 閱讀(3802) 評論(0)  編輯 收藏 引用 所屬分類: windows desktop
            2021精品国产综合久久| 国内精品久久久久久久涩爱| 久久久SS麻豆欧美国产日韩| 99久久无色码中文字幕人妻| 久久国产欧美日韩精品| 国产精品久久国产精麻豆99网站| 99久久夜色精品国产网站| 思思久久99热免费精品6| 久久99国产综合精品免费| 伊人久久免费视频| 亚洲成色WWW久久网站| 99久久国产综合精品五月天喷水 | 久久国产亚洲精品| 久久99亚洲网美利坚合众国| 久久久无码精品午夜| 国产成人久久精品激情| 久久婷婷五月综合国产尤物app | 国产精品美女久久福利网站| 精品乱码久久久久久久| 91麻豆国产精品91久久久| 精品久久一区二区三区| 亚洲精品乱码久久久久久中文字幕| 久久美女人爽女人爽| 中文字幕久久精品无码| 思思久久99热免费精品6| 亚洲狠狠综合久久| 九九99精品久久久久久| 少妇内射兰兰久久| 精品国产青草久久久久福利| 色综合合久久天天给综看| 久久精品无码一区二区三区免费| 国产成人精品久久一区二区三区| 久久精品无码午夜福利理论片| 久久天天躁夜夜躁狠狠躁2022 | 久久99毛片免费观看不卡| 无码人妻久久久一区二区三区| 午夜精品久久久久久久无码| 久久天天躁狠狠躁夜夜不卡| 久久av高潮av无码av喷吹| 精品人妻伦一二三区久久| 久久婷婷人人澡人人|