<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    GDI泄露檢測

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    前一段在一個仿QQ的IM通訊工具中加入屏幕截圖以及截圖編輯功能,但是測試中發現當連續進行幾十次截圖后,系統會出現白屏,開始以為和win7經常閃白有關,屏幕截圖截取到閃白的瞬間導致白屏,后來發現是GDI內存不足,申請不到GDI內存貼圖失敗所致。于是找了GDI泄露的工具,對程序進行GDI內存檢測,下面就介紹兩款GDI泄露檢測工具的用法以及GDI編程的一些注意事項。

    第一款:GDIndicator 支持win7+xp 下載地址

    1、啟動待檢測的程序和GDIndicator,啟動順序沒有要求,之后F5刷新,就能看到系統中所有進程,和使用的資源數

    RFID設備管理軟件找到想要查看的進程,這里我們的程序是 TPCommonControlTest,雙擊進入沒有釋放的GDI對象列表

     

    在左邊list控件中單擊GDI對象,即可查看,對于可用bitmap對象,還可以看縮略圖。

    2、進行可能引起泄露的操作,并復原,對本程序來說,就是打開聊天窗口,屏幕截圖,并關閉聊天窗口。

         如果沒有GDI泄露,在進行上述操作后,GDI對象應該沒有改變,如果改變了,根據差值,查找泄露的GDI對象。

    3、下圖是進行操作后,的GDI對象使用情況,根據差值,重點分析有哪些泄露

    RFID設備管理軟件


    根據對比發現,新增了1個bitmap2個dc對象,然后雙擊TPCommonControlTest進程,結合代碼分析,看哪些地方使用DC了,以及是否釋放。這個工具定位不是很精確,不能給出調用堆棧等,只能由程序員根據新增對象分析、查找。


    第二款工具,GdiLeakDetector,支持xp,win7支持不是很好,可以精確定位GDI泄露位置 下載地址:

    使用方法:

    1、打開GdiLeakDetector,找到要檢測的程序,并點擊運行程序按鈕

    RFID設備管理軟件


    2、進行可能出現泄露的操作,并退出程序,并依次點擊左邊的GDI泄露列表,看哪個是可以修改的

    RFID設備管理軟件

    如上圖所示,很容易的找到,在copyclipbrd中有dc泄露,去函數中查看,發現dc是通過CreateCompatibleDC函數創建的,但是釋放時用了releaseDC,這是不對的,對于CreateCompatibleDC申請的DC,應該用deletedc釋放,而getDC取得的DC資源,用releaseDC釋放,不對應的話就會造成GDI泄露。

     

    附:GDI使用的幾個注意點:

    http://blog.csdn.net/bobob/archive/2005/12/29/565188.aspx

    1、Create出來的GDI對象,要用Deleteobject釋放, create出來的DC,要用DeleteDc釋放,getDC得出的DC,用ReleaseDc釋放。

    2、先create后delete, create1,create2, delete2,delete1的順序。

    3、畫圖步驟

    a 創建一個內存兼容dc(CreateCompatibleDC)
    b.創建一個內存兼容bitmap(CreateCompatibleBitmap)
    c.關聯創建的內存兼容dc和bitmap(SelectObject)
    d.畫圖
    e.BitBlt到目的dc上
    f.斷開內存兼容dc和bitmap關聯(SelectObject)
    g.銷毀內存兼容bitmap
    h.銷毀內存兼容dc

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全