日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Visual studio内存泄露检查工具--BoundsChecker

發(fā)布時(shí)間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Visual studio内存泄露检查工具--BoundsChecker 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

BoundsChecker是一個(gè)Run-Time錯(cuò)誤檢測工具,它主要定位程序在運(yùn)行時(shí)期發(fā)生的各種錯(cuò)誤。??????????????

BoundsChecker能檢測的錯(cuò)誤包括:

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

?????? 3)API函數(shù)使用錯(cuò)誤。

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

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

?1)在VC++集成開發(fā)環(huán)境中打開你所要測試的項(xiàng)目。???

? 2)由于要使用BoundsChecker的編譯連接器重新編譯連接程序,所以我們?yōu)锽oundsChecker獨(dú)自構(gòu)造一個(gè)文件夾。在VC++集成開發(fā)環(huán)境中,具體操作方法是:
??? A)點(diǎn)擊[ Build/Configurations...]菜單命令。

??? B)在彈出的對話框中點(diǎn)擊 Add 按鈕。在Configuration 編輯框中添入你為BoundsChecker創(chuàng)建的文件夾的名稱,這個(gè)名稱是任意的,比如我們?nèi)∶麨锽oundChecker。

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

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

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

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Visual studio内存泄露检查工具--BoundsChecker的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。