除錯 Java Bean 的進階選項

在正常開發期間,您應該不需要考慮每一視覺化編輯器實例所使用的 VM。然而,進階使用者可以配置工作台,使得任何傳給 VM 之 System.outSystem.err 的訊息,都寫入工作區之 .metadata 目錄中的 .log 檔。

用來執行 Java Bean 的虛擬機器 (VM) 與工作區在其中執行的 VM 並不相同。而是針對每一個視覺化編輯器的實例個別建立一個 VM。這個 VM 的類別路徑會設為該專案之 Java 建置路徑中的項目。如果 Java 建置路徑在視覺化編輯器中開啟時變更,則任何開啟的編輯器都必須關閉再重新開啟,才能反映更新的建置路徑。

當工作台啟動時,它可給定 -DEBUG 選項,這個選項指向一個文字檔:

-DEBUG file:/c:/temp/options.txt

除錯檔包含了視覺化編輯器所讀取的項目。如果檔案包含下面這一行,任何傳給 System.outSystem.err 的訊息都會顯示在主控台中:

org.eclipse.jem.proxy/debug/vmtraceout=true

除了顯示視覺化編輯器所用之 VM 的主控台輸出,您也可以在除錯模式中啟動它,並執行遠端除錯。 這個實務尚未最佳化,且在視覺化編輯器的未來版本中可能會有所變更。 不過,我們還是在這裡說明,以便您需要在設計時期執行 Java Bean 的除錯作業。 如果要執行遠端除錯,您將需要兩個工作台在執行;一個是含要除錯的 Java Bean 的工作台,另一個則是可以執行 Socket 型遠端除錯的工作台。第二個工作台可在同一部機器上執行,也可以在不同的機器上執行。如果要啟用視覺化編輯器之 VM 的除錯作業,-DEBUG 檔應包含下面這一行:

org.eclipse.jem.proxy/debug/debugvm=true

每次視覺化編輯器啟動 VM 時,它會詢問您是否要在除錯模式中啟動。 這則訊息會寫入對話框中,或者如果 -DEBUG 檔含有 org.eclipse.jem.proxy/debug/ioconsole=true 項目,則會寫入 System.out 中。

如果訊息寫入 System.out 中,它會要求您在 System.in 輸入 Y 或 N,並等待:

您要在除錯模式下啟動遠端 vm(HelloFrame.java 的專案 (Test)-VM)嗎(輸入 Y 或 N):

Test 專案中的 HelloFrame.java 類別以視覺化編輯器開啟時,會出現前一個對話框。如果您選取「是」或是在主控台中輸入 Y 並按下 Enter 鍵,則 VM 會利用 Socket 連接器,在設定了 -Xdebug 的暫停模式中啟動。這時會配置可用的埠。 之後,會告訴您它的號碼。

如果訊息寫入 System.out,則它將會等待 System.in 上的輸入。

現在您必須將除錯器連接到埠號 7078。請在除錯器連接時輸入 'y'。如果除錯器未連接,程式將不會正常運作。如果您無法連接除錯器,請按 'n'。這還是會導致錯誤,但是可以有較好的清除效果。請輸入 'y' 或 'n':

下一個步驟是將遠端除錯器連接到埠號 7078。當遠端除錯器連接時,執行視覺化編輯器的工作台實例會暫停執行, 因此您必須使用另一個應用程式提供的除錯器。如果另一個應用程式是工作台的另一個實例, 您可以使用除錯 > 除錯功能表選項,並建立新的「遠端 Java 應用程式」配置,來開始進行遠端除錯。

請輸入之前寫入 stdout 的埠號(本例中為 7078)。如果除錯器位在不同的機器上, 您應該在主機欄位中輸入要除錯之工作台的執行機器的 IP 位址。 如果要起始遠端除錯器,請在被除錯的工作台 stdin 主控台上按一下除錯,接著輸入 y

除了提示您針對每個視覺化編輯器實例所使用的 VM 進行除錯之外,您也會看到提示您除錯專案本身的訊息:

您要在除錯模式下啟動遠端 vm(專案 (Test)-Beaninfo)嗎(輸入 Y 或 N):

這適用於用來進行內部檢查且執行 java.beans.Introspector 的 VM,且與視覺化編輯器的 VM 有所區別,因為它不會指定特定的 Java 程式檔名稱。專案內的 Java Bean 第一次需要任何 BeanInfo 時,就會啟動這個 VM,且只要專案維持開啟狀態,它也會維持在作用狀態。 對這種專案進行除錯,可讓您在內部檢查 Java Bean 時,逐步執行並分析 BeanInfo 類別中的任何程式碼。每個使用它的專案的每個 Java Bean 類別都會執行一次內部檢查。 結果會保留在快取記憶體中,以提高效能。 如果任何時候您需要清除為某個專案所保留之 BenInfo 資訊的快取記憶體,您可以從專案的蹦現功能表中關閉開啟這個專案。

母主題:在視覺化編輯器中測試和除錯

(C) Copyright IBM Corporation 1999, 2004. All Rights Reserved.