這項工具輔助適用於 Microsoft Windows 系統和和 UNIX 系統。
PurifyPlus 工具包括 Rational Purify、Rational PureCoverage 和 Rational Quantify。
如果要進一步瞭解 PurifyPlus
工具,請閱讀 PurifyPlus 的入門手冊(Windows 版本或 UNIX 版本)。
如果需要使用 PurifyPlus
工具的逐步資訊,請參閱工具的線上說明。
執行時期效能分析
執行時期效能的分析包含下列各項:
-
偵測記憶體錯誤和洩漏(Windows 和 UNIX 中的 C/C++ 程式)。
-
請利用 Purify 來確定這些問題,您自己的程式碼和軟體所用的元件都包括在內,即使您沒有程式檔也一樣。
-
請利用 PureCoverage 來確定已涵蓋所有程式碼。(您也可以在 Purify 之外,獨立使用 PureCoverage 來收集 C/C++、Java 和 .NET 受管理程式碼的涵蓋面資料。)
-
記憶體用量概況(Windows 中的 Java 和 .NET 受管理程式碼)。 請利用 Purify 來顯示記憶體使用效率不好之處。
-
效能概況(Windows 和 UNIX)。 請利用 Quantify 來顯示您的程式在哪裡花最多時間,以便消除主要的效能瓶頸。
PurifyPlus 工具的執行時期分析會產生執行效率最好的無錯誤程式碼。
工具步驟
如果要利用 PurifyPlus 工具來進行執行時期分析,請執行下列動作:
1. 在 Purify 之下執行程式,以收集錯誤、洩漏和涵蓋率資料(Windows 和 UNIX 中的 C/C++ 程式)
Purify
會偵測出很不容易尋找的執行時期錯誤,其中包括您自己的程式碼和您的軟體所用的元件中之記憶體洩漏。它會報告各種記憶體錯誤,如陣列界限錯誤、利用懸掛指標進行存取、未起始設定的記憶體讀取,記憶體配置錯誤和記憶體洩漏,以便在它們造成損害之前,便加以解決。如果您的系統有
Rational PureCoverage,您也可以見到程式碼已測試和未測試的部分。
首先,請在 Purify 之下執行您的程式:
-
在 Windows 系統中:
-
如果您在 Microsoft Visual Studio 6 中作業,請先選取 Visual Studio 功能表項目:Purify > 進行 Purify 整合。如果您的系統有
PureCoverage,請同時選取 Purify > 收集涵蓋率資料來監視程式碼涵蓋率。之後,再依照正常方式,在 Visual Studio 中執行您的程式。
-
如果您將 Purify 當作獨立程式來使用,而未整合 Visual Studio,請選取檔案 > 執行。在「執行程式」對話框中,選取收集錯誤、洩漏和涵蓋率資料(如果您的系統沒有
PureCoverage,就是收集錯誤和洩漏資料),再執行您的程式。
-
在 UNIX 系統上,增加一個字:purify. 請將這個加到編譯/鏈結行的開頭。 如果系統上有 PureCoverage,請再加上 purecov 。例如:
% purify purecov cc -g hello_world.c
之後,再依照正常方式來執行程式。
當您操作程式時,Purify 會在 Purify 檢視器中列出執行時期錯誤。當您結束程式時,Purify 會報告記憶體洩漏。
請掃描訊息標頭來識別嚴重錯誤。請展開訊息來更詳細的診斷資訊,其中包括產生錯誤的程式碼。您可以從檢視器中,在編輯器開啟程式碼,進入發生錯誤的那一行來直接更正。
更正錯誤並重建程式之後,請執行更新的程式,比較新結果和前一次的執行結果來驗證您的更正。請重複監控、執行、分析及更正的循環,直到程式執行無誤為止。
如果您收集了程式執行的涵蓋率資料,您也可以見到尚未檢查錯誤的程式碼部分。請利用這項資訊來調整執行時期分析的範圍,以便找出程式中發生在任何位置的所有錯誤。
如果需要詳細資訊,請在
Purify 線上說明索引中,查閱下列主題:
2. 在 Purify 之下執行程式,以偵測效率不好的記憶體用量(Windows 中的 Java 和 .NET 受管理程式碼)
Purify 可協助您識別 Java 和 .NET 受管理程式碼記憶體問題。您可以利用 Purify 來判斷:
-
您的程式使用多少記憶體
-
您的程式為了一組特定動作,消耗了多少新的記憶體
-
您的程式中哪些方法和物件消耗這麼多記憶體
-
哪些物件可能妨礙不必要的物件之記憶體回收作業
-
哪裡比較適合強迫記憶體回收來改進效能
首先,請在 Purify 之下執行您的程式。
-
如果您在 Microsoft Visual Studio .NET、IBM WSWB 或 IBM WSS AD 中作業,請先選取功能表項目:PurifyPlus > Purify > 進行
Purify 整合。之後,再依照正常方式來執行程式。
-
如果您將 Purify 當作獨立程式來使用,而未整合 Visual Studio .NET 或 WSWB/WSS AD,請在 Purify 使用者介面中,選取檔案 >
執行。在「執行程式」對話框中,選取收集記憶體效能分析資料,再執行您的程式。
在程式完成了起始設定程序之後,請利用 Purify Snapshot 指令來進行當時記憶體用量的基準性能測試。Snapshot 是探索程式在執行時如何使用記憶體的基礎。
有了 Snapshot 之後,您便可以在程式執行時,擷取程式所用的記憶體記錄。請執行您懷疑洩漏記憶體的程式部分。Purify 會顯示一份記憶體配置圖來呈現現行記憶體使用情況的即時變異。當您觀察到配置的記憶體增加時,請再取得另一份
Snapshot。
請比較兩份 Snapshot 來識別可能造成記憶體洩漏的方法。請結束您的程式,比較這兩份 Snapshot(或找出「差異」)。Purify 會顯示一個呼叫曲線來呈現在程式執行時,在取得第一份和第二份 Snapshot
之間,消耗最大量配置記憶體的方法。您可以將焦點放在呼叫曲線內的特定方法,以便更精確探索它們。
如果配置給方法的記憶體量大到超出預期,請檢查您的程式碼(必要的話,修訂它),以便不再需要之時,將記憶體釋出。
識別了可能有記憶體問題的方法之後,請在物件層次分析這些方法。請尋找應該釋出及回收的記憶體,但因為其他物件仍有多餘參照指向它們,因而尚未釋出及回收記憶體的物件。
如果需要詳細資訊,請在 Purify 線上說明索引中,查閱下列項目:
Quantify 提供了程式及其元件的一組完整、準確而容易解釋的效能資料,因此,您可以識別和消除程式碼中的效能瓶頸。
首先,請在 Quantify 之下執行程式來收集效能資料:
當您操作您的程式碼時,Quantify 會記錄程式效能的相關資料,且會顯示它的執行緒和光纖活動。當您結束程式時,Quantify 會有精確的效能評估,供您尋找和診斷瓶頸。
Quantify 資料顯示畫面包含:
-
「呼叫曲線」視窗,以圖形方式來顯示程式中各個函數的呼叫結構和效能
-
可分類的「函數清單」視窗,列出所有函數及效能資料
-
「函數詳細資料」視窗,顯示特定函數及其呼叫端和後代的資料
-
「已註解的程式碼」視窗,顯示一份程式碼的逐行效能資料
收集好資料之後,您就能夠識別各種效能瓶頸,如無窮計算和重新計算、過早計算,或程式庫呼叫過量且成本過高。
修改程式碼來刪除瓶頸或將瓶頸最小化之後,請在 Quantify 之下,重新執行更新的程式。之後,再建立一份「差異」資料集來比較新結果和先前的執行結果,它會清楚指出效能的提升和退化。
如果需要詳細資訊,請在 Quantify 線上說明索引中,查閱下列主題:
-
執行程式
-
比較執行結果
-
呼叫曲線視窗
-
已註解的程式碼視窗
|