Visual studio內存泄露檢查工具--BoundsChecker

BoundsChecker是一個Run-Time錯誤檢測工具,它主要定位程序在運行時期發生的各種錯誤。??????????????

BoundsChecker能檢測的錯誤包括:

?????? 1)指針操作和內存、資源泄露錯誤,比如:內存泄露;資源泄露;對指針變量的錯誤操作。
????2)內存操作方面的錯誤,比如:內存讀、寫溢出;使用未初始化的內存。???

?????? 3)API函數使用錯誤。

??? 使用BoundsChecker對程序的運行時錯誤進行檢測,有兩種使用模式可供選擇。一種模式叫做ActiveCheck,一種模式叫做FinalCheck。下面分別進行介紹。
??? 1)ActiveCheck是BoundsChecker提供的一種方便、快捷的錯誤檢測模式,它能檢測的錯誤種類有限,只包括:內存泄露錯誤、資源泄露錯誤、API函數使用錯誤。
??? 要想使用ActiveCheck模式來檢測程序的運行時錯誤,只需在VC++集成開發環境中打開BoundsChecker功能,然后從調試狀態運行程序即可。此時ActiveCheck會在后臺自動運行,隨時檢測程序是否發生了錯誤。下面說一下具體的使用步驟。
??? 首先,在VC++集成開發環境中打開你要對其進行測試的程序,同時保證項目處于Debug編譯狀態下。

?? 其 次,確保VC++集成開發環境中[BoundsChecker/Integrated Debugging]菜單項和[BoundsChecker/Report Errors and Events]菜單項處于被選中的狀態。只有這兩項被選中,BoundsChecker才會在程序運行過程中發揮作用。
最后,在VC++集成開發環境中選擇[Build/ Start Debug/Go]菜單命令,在Debug狀態下運行程序,ActiveCheck也在后臺開始運行了。
???? 2)FinalCheck具有BoundsChecker提供的所有檢錯功能。 FinalCheck 是ActiveCheck的超集,它除了能夠檢測出ActiveCheck能夠檢測出的錯誤,還能發現很多 ActiveCheck 不能檢測到的錯誤,包括:指針操作錯誤、內存操作溢出、使用未初始化的內存等等,并且,對于ActiveCheck能檢測出的錯誤,FinalCheck 能夠給出關于錯誤更詳細的信息。所以,我們可以把FinalCheck認為是ActiveCheck的功能增強版。我們付出的代價是:程序的運行速度會變 慢,有時甚至會變的很慢。
????? 要 想在FinalCheck 模式下測試程序,不能使用VC++集成開發環境提供的編譯連接器來構造程序,而必須要使用BoundsChecker提供的編譯連接器來編譯連接程序。當 BoundsChecker的編譯連接器編譯連接程序時,會向程序中插裝一些錯誤檢測代碼,這也就是FinalCheck能夠比ActiveCheck找 到更多錯誤的原因。
下面就介紹一下如何在FinalCheck模式下對程序進行測試:????

?1)在VC++集成開發環境中打開你所要測試的項目。???

? 2)由于要使用BoundsChecker的編譯連接器重新編譯連接程序,所以我們為BoundsChecker獨自構造一個文件夾。在VC++集成開發環境中,具體操作方法是:
??? A)點擊[ Build/Configurations...]菜單命令。

??? B)在彈出的對話框中點擊 Add 按鈕。在Configuration 編輯框中添入你為BoundsChecker創建的文件夾的名稱,這個名稱是任意的,比如我們取名為BoundChecker。

C)在 Copy settings from組合框中選中XXX—Win32 Debug項,然后點擊OK按鈕,接著點擊Close按鈕。
現在,我們已經為FinalCheck構造好了一個文件夾。
?? 3) 點擊[Build/Set Active Configuration…] 菜單命令,選中你剛才為BoundsChecker建的文件夾,然后點擊OK按鈕。這樣BoundsChecker編譯連接程序時生成的中間文件、可執行程序,都會被放到該文件夾下。

??? 4)選擇[BoundsChecker/Rebuild All with BoundsChecker] 菜單命令,對程序重新進行編譯連接,也就是在這時,BoundsChecker向被測程序的代碼中加入了錯誤檢測碼。編譯連接完成后, BoundsChecker會在你為BoundsChecker構造的文件夾中生成可執行文件。
????? 在FinalCheck模式下對程序進行檢測的準備工作都已經做好,這時可以啟動程序開始測試了,作步驟與在ActiveChecker模式下沒什么區別。具體步驟如下:

確保VC++集成開發環境中[BoundsChecker/ Integrated Debugging]菜單項和[BoundsChecker/Report Errors and Events]菜單項處于選中狀態。???? 好 了,BoundsChecker在FinalCheck模式下的使用也介紹完了。ActiveChecker、FinalCheck這兩種模式,比較而言 各有長短。ActiveChecker使用方便,只需在Debug狀態下直接運行程序即可,并且程序的運行速度較快,但檢測的錯誤種類有限; FinalCheck模式下,需要使用BoundsChecker的編譯連接器重新編譯連接生成可執行程序,并且程序的運行速度比較慢,但檢測的錯誤種 類、提供的錯誤相關信息要多于ActiveChecker。所以,何時使用何種模式,應根據當時的具體情況而定。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254083.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254083.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254083.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【轉】如何用Maven創建web項目(具體步驟)

使用eclipse插件創建一個web project 首先創建一個Maven的Project如下圖 我們勾選上Create a simple project (不使用骨架) 這里的Packing 選擇 war的形式 由于packing是war包,那么下面也就多出了webapp的目錄 由于我們的項目要使用eclipse發…

CST光源控制卡簡單操作C#程序

namespace Machine {class LightCST{private SerialPort serialPort ;public LightCST(){serialPort = new SerialPort();}

可能是目前最詳細的Redis內存模型及應用解讀

Redis是目前最火爆的內存數據庫之一,通過在內存中讀寫數據,大大提高了讀寫速度,可以說Redis是實現網站高并發不可或缺的一部分。 我們使用Redis時,會接觸Redis的5種對象類型:字符串、哈希、列表、集合、有序集合。豐富…

bootcmd 和bootargs

看到這個標題,可能覺得這個并沒有什么的,其實不然,編好了u-boot了,但是如何來使用確不是那么簡單的,想當初我將uboot制作出來后以為全部都搞定了,屁顛屁顛的燒到板子上后可系統就是起不來,為什么…

名詞解釋(容器、并發,插件,腳本)及程序對象的創建和注釋文檔

一、專有名詞 1‘  容器 創建一種對象類型,持有對其他對象的引用,被稱為容器的新對象。在任何時候都可以擴充自己以容納置于其中的所有東西。 java在其標準類庫中包含了大量的容器。在某些類庫中,一兩個通用容器足以滿足所有的需要&#xf…

POJ 1696 Space Ant 極角排序(叉積的應用)

題目大意:給出n個點的編號和坐標,按逆時針方向連接著n個點,按連接的先后順序輸出每個點的編號。 題目思路:Cross(a,b)表示a,b的叉積,若小于0:a在b的逆時針方向,若大于0a在…

C#模板匹配創建模板與查找模板函數

class ShapeModulInspect{/// <summary>/// /// </summary>/// <param name="InspectImg">圖像</param>/// <param name="ModulRoi">ROI</param>/// <param name="AngleStart">起始角</param>/…

SuperMap iDesktop之導入數據

SuperMap作為一個平臺軟件有自己的數據格式&#xff0c;現要將ESRI的SHP數據導入到SuperMap的udb數據庫中&#xff0c;可以完成導入&#xff0c;但也不得不說幾點問題。 下面是ArcGIS中批量導入SHP的操作界面。 比較分析 &#xff08;1&#xff09;界面簡潔性 明顯ArcGIS要簡潔…

Ajax教程

AJAX AJAX Asynchronous JavaScript and XML&#xff08;異步的 JavaScript 和 XML&#xff09;。 AJAX 不是新的編程語言&#xff0c;而是一種使用現有標準的新方法。 AJAX 是與服務器交換數據并更新部分網頁的藝術&#xff0c;在不重新加載整個頁面的情況下。 AJAX 是一種在…

dm365 resize

DM368支持視頻的縮放功能&#xff0c;例如DM365可以編碼一個720P的&#xff0c;同時可以以任意分辨率&#xff08;小于720P的分辨率&#xff09;輸出。其中有兩種模式&#xff1a;IMP_MODE_SINGLE_SHOT&#xff0c;IMP_MODE_CONTINUOUS. 在用dm365的時候&#xff0c;用resizer…

SSH

http://www.cnblogs.com/hoobey/p/5512924.html struts --- 控制器 hibernate 操作數據庫 spring 解耦 Struts 、 spring 、 Hibernate 在各層的作用 1 &#xff09; struts 負責 web 層 . ActionFormBean 接收網頁中表單提交的數據&#xff0c;然后通過 Action 進…

C#halcon點擬合圓形函數

public bool FitCircle(double[] X, double[] Y, out double RcX, out double RcY, out double R){t

MyBatis 實踐 -配置

MyBatis 實踐標簽&#xff1a; Java與存儲 Configuration mybatis-configuration.xml是MyBatis的全局配置文件(文件名稱隨意),其配置內容和順序例如以下: properties : 屬性(文件)載入/配置settings : 全局配置參數typeAliases : 定義類型別名typeHandlers : 類型處理器objectF…

DM365視頻處理流程/DM368 NAND Flash啟動揭秘

DM365的視頻處理涉及到三個相關處理器&#xff0c;分別是視頻采集芯片、ARM處理器和視頻圖像協處理器&#xff08;VICP&#xff09;&#xff0c;整個處理流程由ARM核協調。視頻處理主要涉及三個處理流程&#xff0c;分別是視頻采集、視頻編碼和對編碼后的視頻的處理&#xff0c…

系統的Drawable(四)-LayerListDrawable

系統的Drawable(四)-LayerListDrawable 學習自 https://blog.csdn.net/u014695188/article/details/52815444 LayerListDrawable 漫談 使用layer-list可以將多個drawable按照順序層疊在一起顯示&#xff0c;默認情況下&#xff0c;所有的item中的drawable都會自動根據它附上vie…

圖像處理:鏡頭頻率(衍射極限) 和 相機采樣:顯微鏡的采樣定理

采樣定理大家都知道&#xff0c;相信不用多說。 我自己寫下來給自己看。 下面&#xff0c;我總結 大家平時照相的鏡頭或者顯微鏡的物鏡的情況下&#xff1a; 采樣頻率是指圖像在數字化的時候的過程&#xff0c;實際上就是我們相機感光元件CCD或者CMOS的一個個小像元把模擬的連續…

【練習】使用事務控制語句

1.使用show engines 命令確定系統中是否有任何事務存儲引擎可用以及哪個是默認引擎。 2.使用set autocommit 語句啟用autocommit。 3.為使用world數據庫做準備&#xff0c;確認city表使用事務存儲引擎innodb。 4.使用start transaction 語句顯式啟動新事務。 5.刪除一行。 6.使…

老男孩Day1作業(一):編寫登錄接口

要求&#xff1a;編寫登錄接口 1. 輸入用戶名和密碼 2. 認證成功后顯示歡迎信息 3. 輸錯三次后鎖定 1&#xff09;編寫思路 編寫思路參考下面GitHub鏈接中的流程圖 https://github.com/ChuixinZeng/PythonStudyCode/blob/master/PythonCode-OldBoy/Day1/作業/Day1_作業_登錄接口…

hashcat源碼分析1

typedef struct hash{void *digest;salt_t *salt;void *esalt;void *hook_salt; // additional salt info only used by the hook (host)int cracked;hashinfo_t *hash_info;char *pw_buf;int pw_len;} hash_t;一.1. 信號 函數&a…

Davinci及U-boot的一些介紹

TI推出的數字多媒體平臺DM系列&#xff0c;集成了ARM與DSP雙核處理器&#xff1a;DSP處理器運行DSP/BIOS操作系統&#xff0c;負責音視頻編解碼算法以及其他圖形處理算法&#xff1b;ARM處理器運行MontaVista Linux操作系統&#xff0c;負責設備初始化、用戶圖形界面管理。ARM處…