資料介紹
今天給大家介紹一款騰訊自主研發,榮獲2015年十佳組件的“tMemoryMonitor”內存泄漏分析工具。該騰訊內部工具已經在騰訊WeTest官網內開放給用戶使用,助您在工作中掃除內存泄露問題,讓工作精益求精。
鏈接:wetest.qq.com

工具使用入口
【工具簡介】
tMemoryMonitor簡稱TMM,是一款運行時C/C++內存泄漏檢測工具。TMM認為在進程退出時,內存中沒有被釋放且沒有指針指向的無助內存塊即為內存泄漏,并進而引入垃圾回收機制,在進程退出時檢測出堆內存中所有沒有被引用的內存單元,因而內存泄漏檢測準確率為100%。TMM下載地址:http://wetest.qq.com/cloud/index.php/index/TMM
【開發目的】
防泄漏測試一直是編程測試中非常重要的一個模塊,盡管目前市面上已有一些Windows平臺下的內存泄漏動態檢測工具,比如UMDH,VLD,Purify,BoundsCheck等,但其中Purify和BoundsCheck是昂貴的商用軟件,UMDH需要人工獲取內存快照,操作門檻較高,VLD則需要修改源程序的代碼,同時這幾款工具都存在誤報情況,因此準確性不高。而我們的tMemMonitor就是一款針對Windows平臺專業、準確、易用的內存泄漏分析工具。
目前正使用TMM的騰訊團隊
【算法原理】
Windows 中有多種級別的內存分配函數,其中,最底層的是ntdll.dll 提供的Rtl 系列函數,在這之上的有Windows API 提供的heap 管理函數,再上層,C/C++庫提供了malloc/free 函數和new/delete 操作符,因此替換如此層級復雜的函數比較困難,同時如果替換現有的堆分配函數,則無法做到和原有函數的執行效果完全一致,所以替換原生的堆分配函數對于Windows 系統來說幾乎是不可行的,那么只能wrap(包裹)這些堆分配函數。
Linux 下的內存檢測工具,比如Valgrind 就采用了包裹堆分配函數的方法,但它包裹的方法是不透明的,在調用棧中會多出額外一幀。TMM 則采用全透明的包裹函數,將掛鉤函數分為前后二部分(如圖1 所示)。在函數調用前執行
per-hook 函數,在函數返回前調用執行post-hook 函數。有了前后掛鉤函數,TMM就可以在堆分配/釋放函數執行前獲得參數,并修改分配大小之類的參數;在函數執行后,記錄分配的大小和地址、調用棧之類的信息。
【案例介紹】
下面我們通過測試市面上一款我們常用的音樂軟件,來看看這款軟件能給我們帶來怎樣的收益。
在擁有Administrator權限的情況下啟動TMM,然后在列表區添加XX音樂這款軟件,就已經成功在TMM中加載了這款程序。
1.我們在XX音樂中隨意選擇一首歌進行播放
2.播放結束后正常退出XX音樂,這時TMM就會彈出一個名為“data”文件夾,里面包括著在播放音樂期間的數據泄漏詳情
3.點開文檔后就能詳細查看文件泄漏的具體報告
鏈接:wetest.qq.com

工具使用入口
【工具簡介】
tMemoryMonitor簡稱TMM,是一款運行時C/C++內存泄漏檢測工具。TMM認為在進程退出時,內存中沒有被釋放且沒有指針指向的無助內存塊即為內存泄漏,并進而引入垃圾回收機制,在進程退出時檢測出堆內存中所有沒有被引用的內存單元,因而內存泄漏檢測準確率為100%。TMM下載地址:http://wetest.qq.com/cloud/index.php/index/TMM
【開發目的】
防泄漏測試一直是編程測試中非常重要的一個模塊,盡管目前市面上已有一些Windows平臺下的內存泄漏動態檢測工具,比如UMDH,VLD,Purify,BoundsCheck等,但其中Purify和BoundsCheck是昂貴的商用軟件,UMDH需要人工獲取內存快照,操作門檻較高,VLD則需要修改源程序的代碼,同時這幾款工具都存在誤報情況,因此準確性不高。而我們的tMemMonitor就是一款針對Windows平臺專業、準確、易用的內存泄漏分析工具。
目前正使用TMM的騰訊團隊
【算法原理】
Windows 中有多種級別的內存分配函數,其中,最底層的是ntdll.dll 提供的Rtl 系列函數,在這之上的有Windows API 提供的heap 管理函數,再上層,C/C++庫提供了malloc/free 函數和new/delete 操作符,因此替換如此層級復雜的函數比較困難,同時如果替換現有的堆分配函數,則無法做到和原有函數的執行效果完全一致,所以替換原生的堆分配函數對于Windows 系統來說幾乎是不可行的,那么只能wrap(包裹)這些堆分配函數。
Linux 下的內存檢測工具,比如Valgrind 就采用了包裹堆分配函數的方法,但它包裹的方法是不透明的,在調用棧中會多出額外一幀。TMM 則采用全透明的包裹函數,將掛鉤函數分為前后二部分(如圖1 所示)。在函數調用前執行
per-hook 函數,在函數返回前調用執行post-hook 函數。有了前后掛鉤函數,TMM就可以在堆分配/釋放函數執行前獲得參數,并修改分配大小之類的參數;在函數執行后,記錄分配的大小和地址、調用棧之類的信息。
【案例介紹】
下面我們通過測試市面上一款我們常用的音樂軟件,來看看這款軟件能給我們帶來怎樣的收益。
在擁有Administrator權限的情況下啟動TMM,然后在列表區添加XX音樂這款軟件,就已經成功在TMM中加載了這款程序。
1.我們在XX音樂中隨意選擇一首歌進行播放
2.播放結束后正常退出XX音樂,這時TMM就會彈出一個名為“data”文件夾,里面包括著在播放音樂期間的數據泄漏詳情
3.點開文檔后就能詳細查看文件泄漏的具體報告
加入交流群
掃碼添加小助手
加入工程師交流群
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 5G AAU 功放控制和監測模塊簡析
- 基于機器學習的內存泄漏測試腳本預測方法 30次下載
- 簡析獲取單片機代碼運行時間的方法資料下載
- 簡析光耦電路中為何有串聯與并聯電阻資料下載
- 簡析三極管開關電路設計資料下載
- 簡析比較器的原理及應用資料下載
- 簡析555電壓檢測電路資料下載
- 簡析運放并聯的可行性資料下載
- 簡析晶振振蕩電路的設計資料下載
- 簡析用電阻設定增益的單端至差分轉換器資料下載
- 嵌入式裝置內存泄漏檢測系統設計 3次下載
- 基于混合執行測試的靜態內存泄漏警報的自動化確認方法 0次下載
- C++內存泄漏分析方法 5次下載
- 鼠標HID例程(中)簡析 0次下載
- 基于ATM理念的UTRAN傳輸架構簡析
- 內存泄漏檢測工具Sanitizer介紹 1.6k次閱讀
- 堆棧和內存的基本知識 1.5k次閱讀
- Air780E/Air780EP/Air780EQ/Air201模塊遇到內存死機如何分析 1.3k次閱讀
- Windows下編譯工具CMake的安裝和最簡使用 1.2w次閱讀
- 用于分析可執行程序和內存轉儲的命令行工具介紹 2.1k次閱讀
- 記一次Rust內存泄漏排查之旅 1.7k次閱讀
- valgrind檢測內存問題的原理 4.1k次閱讀
- 使用valgrind的callgrind工具進行多線程性能分析 3.4k次閱讀
- C語言使用中指針和內存泄漏的問題和解決方案 4.6k次閱讀
- Android內存管理機制與分析工具 5k次閱讀
- 閃存分析:意外內存泄漏問題 1.6k次閱讀
- 內存的內部運轉和工作的分析 6.9k次閱讀
- 解析Web內存分析與內存泄漏定位 2.7k次閱讀
- C語言內存泄漏的兩種類型 2.1k次閱讀
- 簡狀電爐內部恒溫控制電路 3.9k次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1490次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 93次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7基于單片機和 SG3525的程控開關電源設計
- 0.23 MB | 3次下載 | 免費
- 8基于單片機的紅外風扇遙控
- 0.23 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
電子發燒友App





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論