設置 WatchPoint 你可以在你的程序中,對你所想監控的程序設置一些 WatchPoint ,以方便于你對程序進行調試,或更容易找出問題的原因。就像我前面說, Purify 可以找到你的內存泄露,但其不能找到內存泄露的原因,你可以通過設置 WatchPoint 來" name="description" />

C/C++內存問題檢查利器—Purify 設置WatchPoint

發表于:2009-04-20來源:作者:點擊數: 標簽:WatchPoint利器Purify內存檢查
MI LY: 宋體">設置 WatchPoint 你可以在你的程序中,對你所想監控的程序設置一些 WatchPoint ,以方便于你對程序進行調試,或更容易找出問題的原因。就像我前面說, Purify 可以找到你的內存泄露,但其不能找到內存泄露的原因,你可以通過設置 WatchPoint 來

MILY: 宋體">設置WatchPoint

你可以在你的程序中,對你所想監控的程序設置一些WatchPoint,以方便于你對程序進行調試,或更容易找出問題的原因。就像我前面說,Purify可以找到你的內存泄露,但其不能找到內存泄露的原因,你可以通過設置WatchPoint來跟蹤一塊內存,以找到在程序執行過程中該內存的訪問情況。

 

PurifyWatchPoint可以產生下例消息:

 

l         WPR(被WatchPoint的內存讀)

l         WPW(被WatchPoint的內存寫)

l         WPM(被WatchPoint的內存分配)

l         WPF(被WatchPoint的內存釋放)

l         WPN(來到被WatchPoint的內存的Scope

l         WPX(離開被WatchPoint的內存的Scope

 

一旦你設置好了一個WatchPoint,Purify會自動報告上述這些信息,以告訴你內存的存取情況。很方便你調試程序。

 

WatchPoint一般是在調試程序時跟蹤一塊內存時候使用的,你也可以用其跟蹤一些系統級的全局變量,如:errno。一旦errno被寫了,馬上會報告一個WPW消息,展開后,你能看到函數的堆棧情況,以及是在哪個系統調用后出現了錯誤。這個使用很方便我們找到一些非內存方面的問題。

 

大家可能會有一種感覺,那就是在一般的調試器中,如GDB中也有WatchPoint的設置(對GDB的使用請參考我的文章《GDB調試程序》),那么,在調試器中的WatchPointPurify的有什么不同?下面是一些GDB中的WatchPoint不足的地方:

 

1)  GDB中的WatchPoint用于單步跟蹤中。

2)  GDB中的WatchPoint只能在其內存的Scope中,離開了Scope,WatchPoint會被刪除。

3)  GDB中設置一個4字節的內存WatchPoint,會讓程序的運行效率下降1000個數量級。

 

Purify中的WatchPoint有效地克服了這些問題,它在全局范圍內監控所有內存的使用,并且,其速度上大大地快于GDB等一系列的調試器。

 

有兩種方式可以讓我們設置PurifyWatchPoint,一種是在程序中使用WatchPointAPI函數,一種是直接在調試器中使用(如:GDB),下面我介紹一下這兩種用法:

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97