<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Oo緣來是你oO


    posts - 120,comments - 125,trackbacks - 0
    如何利用 Eclipse 工具來診斷客戶問題

    作者:Jan Kratky ????來自:IBM

      本文描述了可用于診斷客戶報告的 Eclipse 插件問題的策略。這些策略最強大之處在于能夠將一個調試會話從一個 Eclipse 實例附加到正在遠程主機上運行的 Eclipse 實例上。本文中所描述的策略對于基于 Eclipse 2.x 的所有產品都有效,如 WebSphere Studio Application Developer 和 WebSphere Studio Site Developer。

      因此,您寫了一個 Eclipse 插件,您將它交給了用戶 — 那個用戶甚至可能為其支付了費用。該用戶遲早會報告問題。有時您只要根據癥狀報告就能夠斷定發生了什么事。而在其它時候,錯誤將十分棘手,以至于您需要從用戶那里獲取更多信息,包括其系統配置,以及確保他實際正在運行的插件版本是正確的。而在最壞的情況下,您甚至無法在您的環境中重現問題;您需要直接訪問用戶的機器以真正地了解發生了什么事。

      所幸的是,只要具備少量的工作臺工具知識和訪問插件元數據的方法,您就可以診斷客戶針對插件可能報告的任何問題。在本文中,您將看到:

      □ 如何獲得客戶工作臺配置方面的綜合信息,包括所安裝的插件和功能部件,還包括它們每一個的版本
      □ 工作臺錯誤作為日志記錄在哪里
      □ 在哪里找到特定于特殊插件的元數據
      □ 如何從您自己的工作臺調試客戶的環境

      工作臺配置

      Eclipse 提供了一種簡單的方法來抽取一個正在運行的工作臺實例的配置細節(另請參閱圖 1):

      1. 在工作臺的主工具欄中展開 Help 菜單。
      2. 選擇 About ...(菜單項的文本總是以“About”開頭,但還可能包含特定于產品的文本,如“About IBM WebSphere Studio Application Developer”或“About IBM WebSphere Studio Site Developer” — 這都取決于您正在使用的工作臺的特點)。
      3. 在出現的對話框中,按 Configuration Details 按鈕。


    圖 1. About... 對話框

      在當前透視圖的編輯器區域將打開一個名為“Configuration Details”的文件。該文件含有以下信息:

      □ 正在運行工作臺 JRE 的所有 Java 系統特性
      □ 已安裝功能部件和插件及各自版本的完整列表
      □ 安裝/更新管理器活動的日志
      □ 工作臺錯誤日志的完整文本

      您有時候可能會希望客戶給您發送整個日志的副本。幸運的是,將日志保存到文件系統很容易:

      1. 確保 Configuration Details 文件在其中打開的編輯器位于前面并且具有焦點。
      2. 在工作臺的主工具欄中選擇 File 菜單。
      3. 選擇 Save Configuration Details As... 菜單項。

      在圖 1 中還請注意,在 About... 對話框中另外兩個按鈕 Feature Details 和 Plug-in Details 也可用。按其中的任意一個按鈕,會出現一個對話框,該對話框中含有插件/功能部件及其版本的表視圖。如果您希望迅速知道是否真的安裝了插件,或者是否安裝的插件為某個版本,那么您可能希望讓客戶先檢查一下那些對話框中的清單,而不是讓他發送其整個配置細節文件。

      工作臺錯誤日志

      錯誤日志按年月日順序(離現在越近的消息越靠近文件尾部)包含工作臺和插件代碼選擇記錄的任何消息和異常。工作臺自動將所有未捕獲的異常記錄到錯誤日志中。

      錯誤日志的文本包含在我們于前一節中生成的 Configuration Details 文件中。Eclipse 還從 Error Log 視圖提供了錯誤日志的圖形視圖,Error Log 視圖可以在 PDE Runtime 視圖類別下找到。(要打開視圖,請選擇 Window > Show View)。錯誤日志條目在表中以行的形式出現;最近的條目顯示為第一行。您可以這樣來查看某個條目的詳細信息:選擇一行,單擊鼠標右鍵,然后選擇 Properties。在出現的特性對話框中,特定日志條目的詳細信息位于 Status Details 頁上。另請參閱圖 2。


    圖 2. Error Log 視圖

      錯誤日志文件本身作為 .metadata/.log(相對于工作空間 root)駐留在文件系統上。工作空間 root 常常直接位于工作臺安裝目錄中,作為名為 workspace 的文件夾(這是 Eclipse 缺省工作空間位置)。然而,用戶可以將其工作空間 root 配置為文件系統中的任何文件夾。

      插件注冊表

      Configuration Details 文件列出了安裝在工作臺實例中的功能部件和插件。然而,該文件并不指示各個插件是否是活動的。

      插件是惰性裝入的 — 即其代碼只有在需要的時候才裝入內存。這樣,就會出現這樣一種情形,插件已經安裝了,但因為某些原因,它卻沒有被激活。這表明:要么是在工作臺試圖裝入該插件時發生了錯誤,要么只是還沒有訪問插件的功能。

      Plug-In Registry 視圖列出了已安裝的插件,并指示每個插件是否是活動的。要打開該視圖,請轉向 Window > Show View。可以在 PDE Runtime 類別下找到該視圖。

      插件是根據名稱排序的(顯示的是名稱而不是插件標識)。如果插件圖標的上面放有一個“runner”圖標,那么該插件是活動的。


    圖 3. Plug-in Registry 視圖

      圖 3 顯示了一個樣本工作臺安裝的 Plug-in Registry 視圖。請注意,并非所有顯示的插件都是活動的,只有那個名為“Apache Axis”的插件才是活動的,其圖標包含“running”修飾。

      在激活(或者取消激活)插件時,插件注冊表視圖并不自動更新。要檢取插件的當前啟用/禁用狀態,請按視圖標題欄中的 Refresh 按鈕。否則,視圖所反映的仍將是視圖首次顯示時所存在的事務狀態。

      插件元數據

      插件通常會維護特定于自己的元數據。該元數據可以采取任何形式:特性文件、XML 文件甚至特有的二進制格式。當元數據采用人們可以讀懂的格式時,這對直接查看元數據文件會很有用。

      插件元數據駐留在文件系統的 .metadata/.plugins 目錄(相對于工作空間 root)下。.plugins 目錄內有一些文件夾,它們各自對應一個插件,以便維護它們自己的元數據。每個文件夾的名稱都與對應插件的標識相同。該插件的元數據應該能夠在文件夾中找到。

      插件創建者也可能已經選擇了使用插件的缺省 preferences.ini 文件,該文件位于插件的 install 文件夾中。該 install 文件夾將包含插件的標識,并且將位于 plugins 目錄中,安裝就是在該目錄中進行的(該目錄通常可以直接在工作臺安裝 root 下找到,但請記住,插件安裝位置是可配置的)。

      請注意,讓插件在我們剛才描述的位置維護其元數據被認為是工作臺最佳做法。不過,您應該警惕這種可能性,即插件創建者可能選擇不遵循這一約定,而將元數據存儲在其它一些位置,如系統 temp 目錄。

      調試遠程工作臺

      用于維修 Eclipse 插件代碼的功能最強大的工具是 Eclipse 調試器調試客戶工作臺的能力,即便客戶的工作臺運行于遠程機器上也不例外。任何運行工作臺實例的機器,只要能夠通過網絡進行訪問,您都可以使用 Eclipse 安裝的 Debug 透視圖來調試實例上所出現的問題。遠程工作臺借助開放的套接字來公開其調試信息(清單 1 顯示了打開調試套接字所需指定的 Eclipse 啟動參數)。在將調試器連接到客戶的工作臺之后,您就可以利用 Eclipse 調試器的全部功能,如設置斷點、檢查變量和執行堆棧等等。(有關使用 Eclipse Java 調試器的詳盡信息可以在工作臺幫助中獲得,工作臺幫助可以通過工作臺的 Help > Help Contents 菜單項來訪問。)

      重要:工作臺工作空間中的源代碼必須與用來構建(客戶安裝的)插件版本的代碼相匹配。在繼續之前,需要確定客戶所安裝的代碼的級別,并確保您工作空間中的代碼與之匹配。

      在確信源代碼處于正確的級別之后,客戶必須使用下列參數(顯示在清單 1 中)來啟動其工作臺實例,以啟用到遠程調試器的連接。

      清單 1. 啟動可遠程調試的工作臺

      eclipse.exe -vmargs -Xdebug -Xnoagent \
      -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

      請注意賦給 address 的值,它是一個端口號,遠程調試器將開放該端口供連接使用。在上面的示例參數中,端口號是 8000。要明白,客戶可能位于防火墻的后面,他可能必須對防火墻進行配置,以便您能夠建立套接字連接。

      指定 server=y 將表明您剛剛啟動的 VM 將等待進入的套接字連接。通過指定 suspend=n,您允許 Java 類的執行繼續進行。通過指定 suspend=y(或者完全忽略 suspend 指定,因為 y 是其缺省值),您將告知剛剛啟動的 VM:在裝入主類之前,您希望它立即暫停。

      現在,必須從您的工作臺將調試器連接到客戶的會話:

      1. 切換到 Debug 透視圖(Window > Open Perspective)。
      2. 從主工作臺菜單選擇 Run > Debug...。(或者,從(工作臺工具欄中的)Debug 按鈕上的下拉菜單選擇 Debug...)。
      3. 在啟動配置對話框的左側視圖中選擇 Remote Java Application 項。
      4. 單擊 New 按鈕。隨后會創建一個新的遠程啟動配置,并會顯示三個選項卡:Connect、Source 和 Common。
      5. 在 Connect 選項卡的 Project 域中,輸入或者通過瀏覽選擇要使用的項目作為啟動的參考(用于源碼查找)。對于遠程工作臺調試,您無須指定項目。
      6. 在 Connect 選項卡的 Host 域中輸入正在運行 Java 程序的主機的 IP 地址或域名。如果程序與工作臺運行于同一臺機器上,那么請輸入 localhost。
      7. 在 Connect 選項卡的 Port 域中輸入端口,遠程 VM 在該端口上接受連接。在我們的示例中,這個值為 8000,它匹配使用清單 1 中的參數啟動遠程工作臺時所指定的端口。
      8. Allow termination of remote VM 標志是一個開關,它確定調試器中是否支持 Terminate 命令。如果您希望能夠終止目前所連接的 VM,那么請選擇此選項;您一般不需要這么做。
      9. 單擊 Debug。啟動試圖通過指定的地址和端口連接到 VM,結果顯示在 Debug 視圖中。如果啟動程序無法通過指定的地址連接到 VM,那么會出現一條錯誤消息。


    圖 4. 啟動連接到遠程工作臺的調試會話

      現在,您已連接到客戶的工作臺了。可以要求用戶在其工作臺中執行任何您希望的操作,而其工作臺狀態將反映在調試會話中。

      在以這種方式進行調試的時候,您可能希望使用遠程控制工具(如由 WinVNC 或 Lotus Sametime 提供的工具)來直接控制客戶的桌面,以便您能夠自己在客戶工作臺上啟動操作。

      如果檢索到正確級別的代碼,那么您將能夠使用這一技術來代替跟蹤機制。Eclipse 提供了一個優秀的跟蹤框架(請參閱參考資料以獲取鏈接),但象所有跟蹤機制一樣,這種跟蹤框架要求將其代碼插入插件源代碼中來產生跟蹤語句。那些代碼會有一些性能損失,即便關閉了跟蹤也是如此,而且它們肯定會增加代碼資源占用量。而且,您要受開發人員的制約 — 如果在您需要插入跟蹤語句的某個地方沒有插入跟蹤語句,那么跟蹤對您將毫無幫助。然而,有了遠程調試技術,您就不必為之擔憂了 — 您擁有完全源代碼級調試的能力。

      建議的客戶服務過程

      在本文中,您看到了一組用于診斷 Eclipse 插件客戶問題的工具。現在,如何以最適合于您及您的開發小組的方式使用這些工具就由您決定了。對客戶服務過程的一個建議是:

      1. 如果您無法光憑錯誤報告來重現問題,那么就叫客戶把他的配置文件副本發一份給您。用它來確保您的插件版本與用戶的插件版本相同。您還需要仔細檢查錯誤日志以了解“泄密”消息和堆棧跟蹤。
      2. 如果問題看起來是個插件激活問題,那么您可能要讓用戶檢查其插件注冊表視圖來替您一查究竟。
      3. 如果似乎是插件元數據處理方面出了錯誤,或者問題特定于用戶安裝插件的方式,那么就叫用戶把您認為可能有嫌疑的特定于插件的元數據文件副本發給您。
      4. 如果這些都不奏效,那么請將匹配級別的源代碼裝入您的工作空間,然后遠程調試客戶的工作臺。
    當然,要找到客戶問題的癥結所在,您必須保持靈活,具體問題具體分析。

      結束語

      基于 Eclipse 的工作臺為綜合可服務性提供了從查看詳細配置信息到對客戶安裝進行實際代碼級別調試的廣泛功能。



    馬嘉楠
    jianan.ma@gmail.com

    posted on 2006-08-11 17:54 馬嘉楠 閱讀(168) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 男女超爽视频免费播放| 亚洲成av人片天堂网无码】| eeuss影院ss奇兵免费com| 免费看无码自慰一区二区| 亚洲日韩av无码中文| 成人超污免费网站在线看| 亚洲人成影院77777| 久久久久国产精品免费免费搜索 | 久久久久亚洲精品天堂久久久久久 | 91视频精品全国免费观看| 中文字幕亚洲不卡在线亚瑟| 72pao国产成视频永久免费| 中文字幕专区在线亚洲| 久久久国产精品无码免费专区| 亚洲VA中文字幕无码一二三区| 国产麻豆一精品一AV一免费| 久久精品蜜芽亚洲国产AV| 精品国产无限资源免费观看| 亚洲熟女综合一区二区三区| 全黄a免费一级毛片人人爱| 人妖系列免费网站观看| 亚洲成a人片在线观看无码| 中文字幕免费在线看线人| 天堂亚洲国产中文在线| 全亚洲最新黄色特级网站 | 一边摸一边爽一边叫床免费视频| 亚洲免费一区二区| 久久成人免费播放网站| 亚洲AV综合色区无码二区爱AV| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲国产一区视频| 免费A级毛片无码视频| 亚洲情A成黄在线观看动漫软件| 四虎国产精品免费久久影院| 日韩免费电影网站| 亚洲欧洲av综合色无码| 亚洲成av人片在线观看无码不卡| 大地资源免费更新在线播放| 国产免费一区二区三区免费视频 | 亚洲人成自拍网站在线观看| 中文字幕亚洲专区|