側寫和記載工具 - 版本注意事項


1.0 限制
   1.1 如何在「側寫和記載」視景中開啟主控台視圖
   1.2 Probekit:考慮在 Probekit 程式檔上選擇 UTF-8 編碼
   1.3 洩漏分析:在 OS/400 iSeries(TM) 中無法使用洩漏分析
   1.4 側寫應用程式的要訣
   1.5 洩漏分析:「將側寫資料傳給檔案」的非預期行為
   1.6 洩漏分析:開啟 IBM(C) OS/390 (SVC) 資料堆傾出處理程序的物件參照圖會花很長的時間
   1.7 洩漏分析:Hyades 最佳化資料堆傾出檔的位置和管理
   1.8 洩漏分析:洩漏分析日誌檔
   1.9 洩漏分析:設定 RADLEAKJVMSIZE 來分析非常大的資料堆
   1.10 執行緒分析:死結偵測對 IBM JRE 1.4.2 無效
2.0 已知的問題
   2.1 Probekit:請勿在 Probekit 程式檔名稱中使用非 ASCII 字元
   2.2 Probekit:建置 Probekit 程式檔
   2.3 Probekit:Probekit 目標規格中的非 ASCII 字元
   2.4 *方法和行層次涵蓋面:非 ASCII 字元的「方法沖寫」
   2.5 *方法和行層次涵蓋面:EXCLUDE 過濾器的開頭不能有萬用字元
   2.6 側寫需要 libstdc++-libc6.2-2.so.3 修補程式
   2.7 洩漏分析:不支援 J9 JVM 所建立的 IBM 資料堆傾出
   2.8 洩漏分析:當匯入資料堆檔案時,必須指定一個新專案或監視器
   2.9 行層次涵蓋面,Probekit:必須重新啟動專案來從已載入的類別收集資料
   2.10 洩漏分析:在分析洩漏期間,WAS 的資料堆傾出位置
   2.11 *主控台視圖無法顯示雙位元組字元
   2.12 洩漏分析:分析的語言環境必須與資料收集相同
   2.13 執行緒分析:遺漏 IBM JRE 1.4.1 或更早版本之鎖定的執行緒擁有者
   2.14 當在 Solaris 中進行遠端側寫時,Sun 的 JVM 可能會毀損

1.0 限制

1.1 如何在「側寫和記載」視景中開啟主控台視圖

當您側寫應用程式時,依預設,主控台視圖不會出現在「側寫和記載」視景中。

如果要在「側寫和記載」視景中開啟主控台視圖,請選取「視窗 -> 顯示視圖 -> 主控台」。

如果要使標準輸出顯示在主控台中,請按一下「視窗 -> 喜好設定 -> 執行/除錯 -> 主控台」,再選取在程式寫入標準輸出時顯示

1.2 Probekit:考慮在 Probekit 程式檔上選擇 UTF-8 編碼

當建立新的 Probekit 程式檔時,您可以利用精靈來選擇要用的 XML 編碼。 預設選項是 ASCII。 如果您要在探針程式檔中的任何位置使用非 ASCII 字元(如在「標籤」或「說明」欄位中,或在片段的 Java 程式碼中),您必須選擇 UTF-8 編碼,而不是 ASCII。

如果要變更現有探針程式檔的編碼,請用滑鼠右鍵按一下檔案,再選取「開啟工具 -> 文字編輯器」。 請將 XML 標頭的編碼改成 "UTF-8",再儲存和關閉檔案。 再按一下滑鼠右鍵,選擇「開啟工具 -> 探針編輯器」來編輯內容。

1.3 洩漏分析:在 OS/400 iSeries(TM) 中無法使用洩漏分析

在 OS/400 iSeries(TM) 中執行的使用者程式無法使用洩漏分析特性。 這個平台所產生的 Hyades 最佳化資料堆傾出不完整,且不可能產生任何其他格式的資料堆傾出。

1.4 側寫應用程式的要訣

側寫工具的效能直接與所收集的資料量及這個資料轉送至工作台的速率相關。 當收集的資料量增加時,使用者會發現在分析所花的時間和執行不同作業所能使用的記憶體等方面,效能都會變差。 使用者可以利用許多種方式來加強側寫效能。

1.5 洩漏分析:「將側寫資料傳給檔案」的非預期行為

當收集二進位 Hyades 最佳化資料堆傾出時,如果您選取「將側寫資料傳給檔案」,將資料傳給 trcxml 檔,請注意下列事項:

您必須在部署主機中執行 Agent Controller,以存取它所儲存的資料堆檔案。 您第一次在 trcxml 檔上執行「匯入 -> 側寫檔案」時,洩漏分析和檢視物件參照圖的運作都會符合預期。

如果您再次執行「匯入 -> 側寫檔案」,匯入作業能夠運作,但試圖執行洩漏分析或檢視物件參照圖可能會失敗。這是因為在部署主機中,可能已無法使用所需要的資料堆檔案。

如果您發現這個問題,請從您最初匯入 trcxml 檔的專案中存取資料堆檔案。 資料堆檔案在 project 目錄下稱為 "leakanalysisheapdir" 的目錄中。

1.6 洩漏分析:開啟 IBM(C) OS/390 (SVC) 資料堆傾出處理程序的物件參照圖需要很長的時間

IBM(C)OS/390(SVC) 資料堆傾出非常大。 展開大型資料堆傾出,以便在「物件參照圖」視圖中檢視它們,可能要花很長的時間。 因此,作業看起來會像毀損。 即使進度監視器似乎停在 100%,工作台可能仍然持續進行展開資料堆傾出的動作。

1.7 洩漏分析:Hyades 最佳化資料堆傾出檔的位置和管理

執行「擷取資料堆傾出」動作會在目標應用程式部署其中的主機上,產生 Hyades 最佳化資料堆傾出。 資料堆傾出目的地目錄由 Agent Controller 配置檔 serviceconfig.xml 中的 LOCAL_AGENT_TEMP_DIR 設定來控制。 如果需要尋找和修改這個檔案的相關資訊,請參閱「偵測和分析執行時期問題」之下的說明主題「管理 Agent Controller」。

如果出現「下列步驟展開資料堆傾出失敗:...正在讀取檔案」或「下列步驟洩漏分析失敗:...正在建立資料堆物件參照圖」錯誤訊息,請確認 Agent Controller 是正在部署主機中執行,再重試您的指令。Agent Controller 會協助您將檔案從部署主機複製到工作台專案目錄。

1.8 洩漏分析:分析洩漏日誌檔

如果在洩漏分析期間發現問題,您可能會發現洩漏分析日誌檔很有用。

在洩漏分析期間,診斷資訊會寫入 LeakAnalysis.log 檔中。LeakAnalysis.log 包含洩漏分析期間所執行的各種步驟的輸出,它會指出洩漏分析的執行成敗。

LeakAnalysis.log 會寫入與側寫資料相關的側寫專案中。比方說,Windows 的 <my_workspace>\ProfileProject\LeakAnalysis.log。

您可以利用 RADLEAKREGIONDUMP 系統內容,將其他資訊寫入日誌檔中。請將這個選項新增至 rationalsdp.ini 檔中:

VMArgs=-DRADLEAKREGIONDUMP=1

rationalsdp.ini 檔在 Rational Application Developer 安裝目錄中。

1.9 洩漏分析:設定 RADLEAKJVMSIZE 來分析非常大的資料堆

如果您的洩漏分析失敗,且 LeakAnalysis.log 檔出現「JVMDUMP006I 正在處理傾出事件 "uncaught",詳細資料 "java/lang/OutOfMemoryError"」訊息,您就必須增加洩漏分析程序的資料堆大小。

如果要執行這個動作,請設定 Rational Application Developer 系統屬性 RADLEAKJVMSIZE。 這個屬性會控制洩漏分析期間所能使用的 JVM 資料堆大小。

如果要設定 RADLEAKJVMSIZE,請將這個選項新增至 rationalsdp.ini 檔中:

VMArgs=-DRADLEAKJVMSIZE=value

其中 value 是新資料堆大小限制,如 1024M。 預設值是 512M。 您必須指出資料堆大小是用 MB 或 GB(M 或 G)來表示。

rationalsdp.ini 檔在 Rational Application Developer 安裝目錄中。

1.10 執行緒分析:死結偵測對 IBM JRE 1.4.2 無效

當搭配執行緒分析側寫特性來使用 IBM 典型 JVM 時,「側寫和記載」視景的執行緒視圖不會顯示死結中所隱含的所有執行緒的「等待鎖定」狀態。這是因為收集的資料中遺漏資訊。 暫行解決方案:請在「側寫」對話框「引數」標籤的 VM 引數欄位中加入 -Xj9 來使用 IBM J9 JVM。

2.0 已知的問題

2.1 Probekit:請勿在 Probekit 程式檔名稱中使用非 ASCII 字元

無法正確處理名稱中含非 ASCII 字元的 Probekit 程式檔。 請只在 Probekit 程式檔名稱中使用 ASCII 字元。

2.2 Probekit:建置 Probekit 程式檔

請勿使用 *.probe 檔的快速功能表中所顯示的「Probekit -> 編譯」動作。 相反地,請將包含 *.probe 檔的專案轉換成 Probekit 專案,再使用標準建置機制。(如果要將 Java 專案轉換成 Probekit 專案,請使用「檔案 -> 新建 -> 其他」,再從「側寫和記載」區段中,選取將 Java 專案轉換成 Probekit 專案)。

2.3 Probekit:Probekit 目標規格中的非 ASCII 字元

請勿在 Probekit 的「目標」規格的型樣中使用非 ASCII 字元。目標型樣中含非 ASCII 字元的探針無法正確處理。

2.4 *方法和行層次涵蓋面:非 ASCII 字元的「方法沖寫」

當新增「當...時,沖寫涵蓋面資料」的方法型樣時,請勿使用非 ASCII 字元

如果您在方法型樣「新增」對話框的套件、類別或方法欄位中輸入非 ASCII 字元,會出現輸入無效的錯誤,您將無法關閉對話框。

暫行解決方案:請利用萬用字元(星號)來取代型樣中的非 ASCII 字元。

附註:6.0.0.1 版已修正這個問題。

2.5 *方法和行層次涵蓋面:EXCLUDE 過濾器的開頭不能有萬用字元

開頭是萬用字元(星號)的 EXCLUDE 過濾器,如 "*foo",會使「涵蓋面統計值」、「涵蓋面導覽器」和「含註釋的程式碼」視圖不顯示任何資料。 暫行解決方法:請勿使用這種 EXCLUDE 過濾器。

附註:6.0.0.1 版已修正這個問題。

2.6 側寫需要 libstdc++-libc6.2-2.so.3 修補程式

在您可以收集側寫資料之前,Agent Controller 必須已在您要從中收集資料的機器中執行。 在 RedHat Linux 機器中,Agent Controller 需要 libstdc++.so 修補程式 libstdc++-libc6.2-2.so.3。

2.7 洩漏分析:不支援 J9 JVM 所建立之 IBM 資料堆傾出

在 IBM J9 JVM 中執行的使用者程式無法使用洩漏分析特性。

當您設定 IBM_HEAPDUMP 環境變數,且將 "kill -3" 信號傳給執行中的 Java 程序時,IBM J9 JVM 會利用類似 heapdump.20041012.093936.2192.dmp 的名稱來建立傾出檔。 您必須執行 j9extract 和 jdmpview 來後置處理這些 .dmp 檔及建立 IBM 資料堆傾出。

這些資料堆傾出的格式與典型 IBM jvm 所產生的資料堆傾出格式不同。

2.8 洩漏分析:當匯入資料堆檔案時,必須指定一個新專案或監視器

如果您將多組有相同監視器名稱的資料堆傾出匯入現有專案中,如果您後來又儲存專案或結束工作台,您可能會失去資料。

如果要防止這個情況,請指定專用的專案/監視器組合給每一組匯入的資料堆。

2.9 行層次涵蓋面,Probekit:必須重新啟動專案來從已載入的類別收集資料

如果您啟動某 WAS 伺服器且連接到這個伺服器,Probekit 和行層次涵蓋面這兩個側寫類型不會收集目標 JVM 中已載入的任何類別的資料。 暫行解決方法:如果要從這些類別收集資料,請重新啟動包含這些類別的專案。

2.10 洩漏分析:在分析洩漏期間,WAS 的資料堆傾出位置

在側寫 WAS 應用程式以進行 Linux 中的洩漏分析時,optheap 檔會放在下列目錄中:

如果是 WAS 6.0,在 Rational Application Developer 安裝目錄的 runtimes/base_v6/profiles/default 中

如果是 WAS 5.x,在 Rational Application Developer 安裝目錄中。

2.11 *主控台視圖無法顯示雙位元組字元

在側寫期間,主控台視圖會將所有雙位元組字元顯示為 ????。

附註:6.0.0.1 版已修正這個問題。

2.12 洩漏分析:分析的語言環境必須與資料收集相同

當收集 Hyades 最佳化資料堆傾出時,工作台主機、遠端部署主機和目標應用程式的語言環境設定都必須相同。

2.13 執行緒分析:遺漏 IBM JRE 1.4.1 或更早版本之鎖定的執行緒擁有者

當利用 IBM JVM 1.4.1 或更早的版本來進行執行緒分析的側寫時,「側寫和記載」視景中的執行緒視圖不會顯示鎖定監視器的執行緒擁有者,因為沒有收集這個資料。 暫行解決方法:升級至 IBM JRE 1.4.2。

2.14 當在 Solaris 中進行遠端側寫時,Sun 的 JVM 可能會毀損

當在 Solaris 中進行遠端側寫時,Sun 1.4.x JRE 中的問題會防止側寫某些特性組合,當啟用記憶體側寫或執行緒分析時,尤其如此。Sun 的網站有這個問題的說明:http://developer.java.sun.com/developer/bugParade/bugs/4614956.html 解決方案:請使用 JRE 1.4.2_06 或更新的版本。

返回主要 Readme 檔