文章編號: 286350 - 上次校閱: 2011年8月30日 - 版次: 1.0

如何使用 ADPlus.vbs 來疑難排解 「 擱置 」 和 「 當機"

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

ADPlus.vbs (ADPlus) 是一種工具從 Microsoft 產品支援部 (PSS),可以疑難排解任何處理程序或應用程式停止回應 (擱置) 或失敗 (當機)。通常,您可以做為 [取代] 工具使用 ADPlus Microsoft 網際網路資訊伺服器 (IIS) 例外狀況監視器 (6.1/7.1]) 及使用者模式處理序傾印。這些是兩個不同的工具 PSS 經常用於找出原因,處理程序停止回應 (擱置) 或意外結束 (當機) 在 Microsoft Windows DNA 環境中。

其他相關資訊

系統需求

ADPlus 會有下列的最小需求:
  • Windows NT 4.0 版本 4 或更新版本
  • 達 5.6 或更新版本的 Windows 指令碼處理主應用程式版本
  • 至少 10 mb 的可用空間的磁碟或網路共用 ADPlus 會放置輸出檔案
  • 偵錯工具的 Windows 安裝

您從哪裡取得 ADPlus?


ADPlus 會包含最新 Microsoft 偵錯工具的視窗。若要取得最新 Microsoft 偵錯工具的視窗,請造訪下列 Microsoft 網站:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)

偵錯工具會列在 「 Windows SDK 安裝精靈 」 中的 [安裝選項] 畫面上的兩個位置。如果您想要在您所使用的電腦上安裝的 Windows 偵錯工具,您應該選取偵錯工具視窗在 [] 下的選項常見的公用程式.如果您想要設定不同的電腦上的 [偵錯工具的視窗,您應該選取偵錯工具在 [] 下的選項 可轉散發套件若要下載所有的三個版本的偵錯工具安裝套件 (x86、 x64,Itanium)。

附註偵錯工具的 Windows 中的最新版本會提供 Windows SDK 的一部分。此外,檔案名稱已從 ADPlus.vbs 變更為 ADPlus_Old.vbs。此外,ADplus.exe 已加入。因此,ADplus.exe 會執行當您只輸入adplus.ADplus.exe 不是與 ADPlus_Old.vbs 相同。本文提到的.vbs 版本。當您想要執行的.vbs 版本時,您必須輸入ADPlus_old.vbs.


ADPlus 版本 6.0 的新功能

已完全重新撰寫 ADPlus V6.0。工具會有新的參數和全新功能。現在,您就可以透過外部組態檔設定的工具。您可以在 Microsoft Windows 偵錯工具套件所包含的偵錯工具說明檔案 (Debugger.chm) 中檢視的新功能與參數有關的更新的資訊。

Debugger.chm 位於與 ADPlus.vbs 相同的資料夾。若要尋找 ADPlus 的說明文件,請按一下 內容 索引標籤,並按一下下列所有項目]:
  • 使用偵錯工具視窗
  • 損毀傾印檔案
  • 使用者模式傾印檔案
  • 建立使用者模式傾印檔案
  • ADPlus
您也可以按一下 [尋找 ADPlus 的說明文件 索引 型別] 索引標籤 ADPlus 在 [關鍵字] 文字方塊中。

ADPlus 的作用何在?

ADPlus 是以主控台為基礎的 Microsoft Visual Basic 指令碼。它會自動執行 Microsoft CDB 偵錯工具產生記憶體傾印和記錄檔包含一或多個處理序偵錯輸出。每當您執行 ADPlus,偵錯資訊 (記憶體傾印和文字檔,包含偵錯資訊) 放在一個新的唯一命名資料夾 (例如 C:\Temp\Crash_Mode__Date_01-22-2001__Time_09-41-08AM) 上的本機檔案系統,或在遠端網路共用上。除此之外,每個建立的檔案會有一個唯一的名稱 (例如 PID-1708__Inetinfo.exe__Date_01-22-2001__Time_09-41-08AM.log) 以避免覆寫較舊的檔案,以較新的。

ADPlus 會與任何使用者模式處理程序或服務,例如網際網路資訊服務 (IIS)]、 [Microsoft 交易伺服器 (MTS)] 或 [Microsoft COM + 應用程式。

以下是部分的 ADPlus 功能:
  • ADPlus 會使用最新的 Microsoft 偵錯工具的增強的功能、 速度和可靠性。
  • 當 ADPlus 傾印的多個處理序的記憶體時,它會以非同步方式,讓每個處理序已經凍結但卻傾印一次。這個方法可提供有效的 「 快照 」 整個應用程式在執行 ADPlus 的時間。您必須擷取組成應用程式,所有處理序和應用程式在此同時,用來擷取應用程式就會發生問題當時的狀態的所有處理序。這是另一個程序的遠端程序呼叫的應用程式尤其重要。
  • ADPlus 會有一個命令列介面。由於 ADPlus 沒有提供圖形化使用者介面,您可以執行它 安靜 從遠端命令殼層 (remote.exe 是從遠端命令殼層) (以隱藏對話方塊) 模式。以無訊息模式,錯誤會顯示在主控台,並寫入事件記錄檔。如需有關如何從遠端命令殼層執行 ADPlus 的詳細資訊,請參閱本文的 「 使用狀況 」 一節。
  • 如果您使用 -通知 當 ADPlus 監視的損毀,且 Windows 信差服務已啟動參數,ADPlus 可警示使用者或電腦透過 Windows 信差服務損毀。
  • 當損毀發生時,ADPlus 會監視損毀模式中的處理序時,ADPlus 會在事件記錄檔傳送損毀的型別相關的重要資訊。
  • ADPlus 會支援 XCOPY 的部署。如果您安裝 ADPlus 隨附在測試電腦偵錯工具套件,您可以複製偵錯工具已安裝另一台電腦的資料夾。此外,ADPlus 並不需要您註冊在系統上的所有自訂元件物件模型 (COM) 元件。有鑑於此,您可以在具有鎖定的軟體設定的生產伺服器上使用 ADPlus。若要移除 ADPlus,刪除其中已安裝或複製到資料夾。

您應該在何時使用 ADPlus?

ADPlus 被為了提供 Microsoft PSS 支援專業人員,則必須找出複雜的環境中會發生的問題原因的偵錯資訊。

使用 ADPlus 擷取偵錯資訊,如果您遇到下列問題:
  • 處理程序停止回應。
  • 處理程序耗用的單一處理器電腦上,在雙處理器電腦上,全向處理器電腦上的 25 %cpu 的 50 %cpu 的 100 %cpu 等。
  • 處理序當機或意外地關機。

何時您不應該使用 ADPlus?

請勿使用 ADPlus 在下列情況:
  • 如果您必須疑難排解程式或處理序意外結束時啟動。您只能使用 ADPlus 順利啟動的處理程序。如果要疑難排解在啟動時意外結束的處理程序,使用者模式處理序傾印可能會更好的解決方案。 如需有關使用者模式處理序傾印的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    253066? (http://support.microsoft.com/kb/253066/ ) OEM 支援工具階段 3 服務版本 2 可用性
    或者,您可以使用最新的偵錯工具,手動偵錯程序。如需有關最新的偵錯工具的詳細資訊,請造訪下列 Microsoft 網站:
    http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
  • 如果當您使用 ADPlus 以損毀模式時,沒有對效能造成顯著影響。通常,這由動態連結程式庫 (Dll) 所造成,或該擲回許多 Microsoft Visual c + + EH 例外狀況的程式。(這些例外狀況發生時使用 c + + 擲回 陳述式,或當您使用 try/catch 封鎖))。偵錯輸出資料流中寫入大量資訊的程式也可能會造成效能降低。在絕大多數的情況下,ADPlus 不會影響效能明顯損毀模式執行時。
  • 如果您在叢集環境中執行您使用 ADPlus 時應採取某些預防措施。如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    841673? (http://support.microsoft.com/kb/841673/ ) 在叢集中的伺服器失敗替換當您嘗試建立傾印檔案的資訊儲存庫使用 ADPlus 或 Userdump 在 Exchange 2000 伺服器或 Exchange Server 2003

ADPlus 是如何運作的?

ADPlus 會有兩種作業模式:
  • 「 擱置 」 模式用來疑難排解處理程序擱置、 CPU 使用率達 100%,以及其他不包括損毀的問題。當您以擱置模式使用 ADPlus 時,您必須等到處理程序或處理程序停止回應之前執行指令碼 (不同於損毀模式,擱置模式並非持續性)。
  • 「 損毀 」 模式可用來疑難排解損毀,導致 Dr.Watson 錯誤或任何其他類型的錯誤,因此造成程式或服務意外結束。當您使用 ADPlus 以損毀模式時,您必須啟動 ADPlus 之前 當機,就會發生。您可以設定 ADPlus 通知系統管理員或電腦透過損毀 -通知 切換。

擱置模式

在此模式中,ADPlus 會立即產生指令碼完成後會在命令列中指定的所有處理序的完整記憶體傾印。建立每個.dmp 檔放在執行 ADPlus 時所在的日期/時間戳記的資料夾。執行 ADPlus 時,每個檔案名稱會包含處理程序名稱]、 [處理序識別碼] 及 [日期/時間戳記。雖然處理序記憶體傾印到檔案,已凍結的處理程序。建立記憶體傾印檔案之後,處理程序會繼續使用 noninvasive 連接/分離 CDB 偵錯工具。

使用提示 您可以使用以擱置模式,而非 Userdump.exe 的 ADPlus,來傾印一或多個處理程序的記憶體。此外,擱置模式也可在 「 終端機伺服器工作階段。

損毀模式

在此模式下,ADPlus 會將 CDB 偵錯工具附加至命令列中指定的所有處理程序。ADPlus 會自動設定偵錯工具來監視下列類型的例外狀況:
  • 無效的控制代碼
  • 不正確的指令
  • 整數除數為零
  • 浮點數被零除
  • 整數溢位
  • 無效的鎖定順序
  • 存取違規
  • 堆疊溢位
  • C + + EH 例外狀況
  • 未知的例外狀況
當您在疑難排解這些類型的例外狀況,您可以使用 ADPlus 以損毀模式,而非 IIS 例外狀況監視器或 Userdump.exe。損毀模式使用"破壞現有程式碼 」 附加到 CDB 偵錯工具,因為它無法運作在 Microsoft Windows NT 4.0 或 Windows 2000 終端機伺服器工作階段。只有擱置模式也可在這些作業系統上的 「 終端機伺服器工作階段,因為它們需要 noninvasive 的附加的使用。如需有關如何以侵入式和 noninvasive 最新的偵錯工具附加至處理序,請參閱 「 使用偵錯工具視窗: 附加至執行處理序 (使用者模式) 」 一節中的偵錯工具說明。

附註 損毀模式被支援 「 終端機伺服器 」 工作階段在 Windows XP 和 Microsoft Windows Server 2003 的作業系統上。

當 ADPlus 以損毀模式執行時,偵錯工具會維持附加至每個處理程序直到嚴重的例外狀況,並在程序意外結束,或是當使用者按下 CTRL + C 組合鍵來分離處理程序偵錯工具命令列上指定給該處理程序的存留期。要手動分離處理程序偵錯工具,您必須將偵錯工具] 視窗中,最大化,然後按下 CTRL + C 來中斷偵錯。

當您按下 CTRL + C 時,ADPlus 會截獲這個命令,會開始列出到記錄檔,所有的執行緒堆疊和之前會與偵錯工具中斷連結,然後產生迷你記憶體傾印記錄的程序。因為損毀模式會執行侵入式連接,偵錯工具中斷連結時,會停止處理程序。您必須重新啟動處理程序。如果是 MTS 或 COM + 的程序,程序會自動重新啟動並呼叫該封裝中的元件在下一次。

第一個出現的例外狀況

每種類型的例外狀況 (例如存取違規或堆疊溢位) 可能會引發為偵錯工具 初次出現 例外狀況 (含) 第二個機會 例外狀況。根據定義,第一個出現的例外是不嚴重,除非它沒有正確處理使用錯誤處理常式。發生這個問題時,會一次為第二個出現的例外 (只有偵錯工具可以處理這些) 引發例外狀況。如果沒有偵錯工具處理第二個可能發生的例外狀況,便會結束應用程式。

如需關於第一和第二個例外狀況和 Windows NT SEH (結構化的例外處理) 的機率,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文:
105675? (http://support.microsoft.com/kb/105675/ ) 第一個和第二個可能發生的例外狀況處理
根據預設,當 ADPlus 偵測到所有類型的例外狀況的第一個機會 (非嚴重) 例外狀況 除了 無法辨識和 EH 例外狀況,它會執行下列動作:
  1. 暫停處理記錄的日期和時間正受到監視的處理程序的記錄檔中發生例外狀況。
  2. 記錄引發例外狀況正受到監視的處理程序的記錄檔中的執行緒的執行緒識別碼] 和 [呼叫堆疊。
  3. 產生唯一名稱迷你記憶體傾印記錄 (.dump-u /m) 的例外狀況發生時,只有在處理程序,然後繼續進行程序。
附註 根據預設,ADPlus 並不會產生唯一的迷你記憶體傾印記錄的第一個的 eh 和未知的例外狀況,因為這些例外狀況會經常發生。通常,這類例外狀況會處理的錯誤處理程序或 DLL 的程式碼。這些是已處理的例外狀況,因為它們不會變成再次出現 (無法處理的) 例外狀況,它們不會造成處理程序。

不過,您可以設定 ADPlus 產生唯一的迷你記憶體傾印的第一個的 eh 和未知的例外狀況。若要這樣做,您必須使用組態檔來自訂 ADPlus。

第二個出現的例外狀況

ADPlus 如果偵測到 (第二個的機率嚴重) 例外狀況的 所有 型別 (包括 EH 例外及未知的例外) 的例外狀況,它會執行下列動作:
  1. 暫停處理記錄的日期和時間正受到監視的處理程序的記錄檔中發生例外狀況。
  2. 記錄引發例外狀況正受到監視的處理程序的記錄檔中的執行緒的執行緒識別碼] 和 [呼叫堆疊。
  3. 只有在發生嚴重的例外狀況,產生完整記憶體傾印程序的命令,然後退出偵錯工具。這個動作會破壞處理程序。
附註 分析記憶體傾印的 Microsoft PSS 技術支援工程師,他們可能需要取得的任何自訂的元件或 Dll 以及其對應的符號檔的複本。如需有關如何為您的 Dll 中建立符號檔的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
121366? (http://support.microsoft.com/kb/121366/ ) PDB 和 DBG 檔-它們是什麼以及它們如何運作
291585? (http://support.microsoft.com/kb/291585/ ) 如何建立 Visual c + + 應用程式的偵錯符號
如需有關如何取得 Microsoft 產品 (所需的分析與偵錯的記憶體傾印) 的符號的詳細資訊,請造訪下列 Microsoft 網站:
http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx (http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx)

ADPlus 指令行參數

若要使用 ADPlus,您必須指定一系列的命令列參數或引數的指令碼。最低限度,ADPlus 會需要兩個參數: 一個指定的作業模式,另一個則指定要操作的目標處理序。

以下是最常使用的參數。您也可以藉由執行檢視完整的參數清單 ADPlus –help或藉由檢視偵錯工具的說明檔案 (Debugger.chm)。
  • -停止回應
    這個參數設定到以擱置模式執行 ADPlus。您必須使用此參數與 -iis, -pn-p 切換。您不能使用 -停止回應 使用 -當機 切換。

    附註 當以擱置模式執行 ADPlus 時,您必須啟動 ADPlus 之後 處理程序停止回應,或正在使用高的 CPU 百分比。
  • -當機
    這個參數設定 ADPlus 以損毀模式執行。您必須使用此參數與 -iis, -pn-p 切換。您不能使用 -當機 使用 -停止回應 切換。

    附註 當 ADPlus 以損毀模式執行時,您必須啟動 ADPlus 之前 處理程序結束 unexpectedlys 或變得不穩定。
  • -pn 處理程序名稱
    -pn 參數用來指定您想要分析的 ADPlus 的處理程序名稱。若要指定多個處理序,請使用 [多個 -pn 處理程序名稱 切換。例如:
    -pn process1.exe-pn process2.exe
  • -p 處理程序識別碼
    -p 參數用來指定處理程序識別碼 (PID) 您想要分析的 ADPlus 的程序。若要指定多個處理序,請使用 [多個 -p PID 切換。例如:
    -p 1896-p 1702
  • -sc繁衍命令
    不同於 -pn-p 參數,指定哪一個處理序已經在執行附加偵錯工具, -sc 參數會定義開始 (或繁衍) 的參數與應用程式偵錯工具。例如:
    -sc"c:\windows\system32\notepad.exe
  • -iis
    -iis 參數用來偵錯執行網際網路資訊服務 (IIS) 4.0 或更新版本的伺服器電腦。當您使用 ADPlus 使用 -iis 參數,ADPlus 監視所有的 IIS 同處理序 (交易) 和出序 (Mtx.exe/Dllhost.exe) 應用程式。您可以使用 -iis 切換與 -pn 切換或 -p 參數,或您可以使用它來分析 IIS 和所有執行的 MTS / COM + 應用程式中的損毀模式或擱置模式。

    如果您想要分析伺服器電腦執行 IIS 3.0 或更早版本,使用 -pn 切換,並指定要監視的處理序的另一個。
  • -通知 電腦名稱使用者名稱
    這個參數只有在以損毀模式執行 ADPlus 時才有效。這個參數會指示 ADPlus,通知指定的使用者名稱或當機的電腦名稱。當偵錯工具中斷的第二個可能發生例外狀況,因為處理程序或使用者按下 CTRL + C 來停止偵錯時,遠端使用者或電腦透過本機信差服務傳送通知。這項告知,正在進行偵錯的電腦上啟動本機信差服務時,才會發生。
  • -無訊息
    這個參數會指示 ADPlus,若要隱藏所有的強制回應對話方塊。這個參數就很有用,如果您執行 ADPlus 的遠端命令殼層強制回應對話方塊可能會導致 ADPlus 無限期地等候使用者按下 [確定].要取得最佳結果,請確定這是會傳遞至 ADPlus.vbs 的第一個參數。
  • -o 輸出目錄
    這個參數會指示 ADPlus 放置偵錯輸出檔的位置。如果您使用長檔名,您必須將它們括在雙引號中。此外,您可以使用 UNC 路徑 (\\伺服器\共用).如果您使用 UNC 路徑時,ADPlus 會建立新的資料夾,您所指定的 UNC 路徑的正下方。此資料夾命名為執行 ADPlus 的伺服器 (例如 \\伺服器\共用\Web1 或 \\伺服器\共用\Web2)。這個參數就很有用,如果在 web 伺服陣列中皆將其輸出相同的網路共用的多部電腦上執行 ADPlus。

第一次執行 ADPlus

根據預設,偵錯工具安裝到 C:\Program Files\Debugging 工具的 Windows 資料夾。若要變更安裝資料夾,請執行 [自訂安裝],當您安裝偵錯工具,並指定不同的資料夾。或者,如果執行 「 一般 」 安裝,請將程式 Files\Debugging 工具的 Windows 資料夾的內容複製到不同的資料夾。

若要執行 ADPlus,開啟命令殼層,切換至偵錯工具已安裝或複製,其中的資料夾,然後輸入 ADPlus.vbs.

您可能會提示您變更預設的指令碼解譯器從 Wscript.exe Cscript.exe。Microsoft 強烈建議您允許 ADPlus,若要將 CSCript 設定為預設指令碼解譯器。

語法

ADPlus 會使用下列語法:ADPlus.vbs 操作模式 用以監視選擇性參數的程序位置 操作模式-停止回應-當機
位置 若要監視的處理程序-iis, -pn 處理程序.exe-p PID
位置 選擇性參數-通知, -o-無訊息.

準備損毀模式偵錯的伺服器

您以損毀模式執行 ADPlus 之前,您必須準備從 ADPlus 損毀模式偵錯工作階段取得的大部分資訊的伺服器。

若要準備 Windows 2000 為基礎的伺服器以損毀模式偵錯的步驟

  1. 在您的伺服器上的 [C:\WINNT\Symbols] 資料夾來安裝 Windows 2000 SP1 或 SP2 的符號。您可以從下列 Microsoft 網站下載符號:
    Windows 2000 SP1
    http://download.microsoft.com/download/win2000platform/SP/SP1/NT5/EN-US/SP1SYM.exe (http://download.microsoft.com/download/win2000platform/SP/SP1/NT5/EN-US/SP1SYM.exe)

    Windows 2000 SP2
    http://download.microsoft.com/download/win2000platform/SP/SP2/NT5/EN-US/SP2SYM.exe (http://download.microsoft.com/download/win2000platform/SP/SP2/NT5/EN-US/SP2SYM.exe)

    在下載 Sp1sym.exe 或 Sp2sym.exe 之後,請從指定的資料夾執行檔案。
  2. 當系統提示您解壓縮檔案到新的暫存資料夾,如 C:\Sp1sym 或 C:\Sp2sym 或磁碟機或資料夾具有足夠的磁碟空間。
  3. 執行 C:\Sp1sym\Support\Debug\Symbols\i386\Symbols_spexe 或 C:\Sp2sym\Support\Debug\Symbols\i386\Symbols_spexe (其中 C:\Sp1sym 或 C:\Sp2sym 是前一個步驟中的檔案解壓縮的資料夾)。
  4. 您的使用者授權合約提示時,請按一下 [是].
  5. 提示您時,您可以在此解壓縮檔案的資料夾,請按一下 C:\WINNT\Symbols然後按一下 [確定].請注意新的 [C:\WINNT\Symbols] 資料夾會出現。這個資料夾包含了各種名稱如 DLL 和 EXE 的子資料夾。
  6. 您自訂的 Dll,以及任何張貼 SP1 或 SP2 的快速補充程式的符號複製到 C:\WINNT\Symbols\Dll 資料夾中。
  7. 將自訂的.exe 檔案的符號複製到 C:\WINNT\Symbols\Exe 資料夾中。此外,您必須取得從您的開發人員的.pdb 或.dbg 的任何檔案,然後將這些檔案放在 C:\WINNT\Symbols\Dll 資料夾中。
  8. 覆寫任何.dbg 或.pdb 檔案已經存在於您的 hotfix 版本的 C:\WINNT\Symbols\Dll 資料夾中。

    附註 您可以使用最新版的 Winzip 開啟 hotfix 套件。您可以從 [\Debug] 子資料夾來展開符號。[\Debug] 子資料夾都包含在每個 hotfix self-installer。
  9. 建立一個 _NT_SYMBOL_PATH 環境變數,然後設定等於 C:\WINNT\Symbols.這個變數可以是系統變數,或是使用者環境變數。

若要準備 Windows NT 4.0 為基礎的伺服器以損毀模式偵錯的步驟

  1. 假設您正在執行 Windows NT 4.0 Service Pack 6a。安裝 Windows NT 4.0 SP6a 符號到您的伺服器上的 [C:\WINNT\Symbols] 資料夾。
    如需有關 Windows NT 4.0 Service Pack 6/6a 的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    241211? (http://support.microsoft.com/kb/241211/ ) Windows NT 4.0 Service Pack 6/6a (第一部分) 中修正 bug 的清單
    在下載 Sp6symi.exe 之後,請從指定的資料夾中執行。
  2. 當系統提示您時,將檔案解壓縮至 C:\WINNT 資料夾 (或替代適當的 [\WINNT] 資料夾,如果未安裝符號以 C:\WINNT)。請注意,新的 [C:\WINNT\Symbols] 資料夾會出現包含不同的子資料夾命名為 DLL 和 EXE,其他人。
  3. [C:\WINNT\Symbols\IIS4] 資料夾的子資料夾複製到 C:\WINNT\Symbols。當提示您覆寫所有檔案時時,請按一下 [是].
  4. 複製您自訂的符號 Dll 和任何 SP6a hotfix 張貼到 C:\WINNT\Symbols\Dll 資料夾。
  5. 將自訂的.exe 檔案的符號複製到 C:\WINNT\Symbols\Exe 資料夾中。此外,您必須取得從您的開發人員的.pdb 或.dbg 的任何檔案,然後將這些檔案放在 C:\WINNT\Symbols\Dll 資料夾中。
  6. 覆寫任何.dbg 或.pdb 檔案已經存在於您的 hotfix 版本的 C:\WINNT\Symbols\Dll 資料夾中。

    附註 您可以使用最新版的 Winzip 開啟 hotfix 套件。您可以從 [\Debug] 子資料夾來展開符號。這個子資料夾會包含在每個 hotfix self-installer。
  7. 建立一個 _NT_SYMBOL_PATH 環境變數,然後設定等於 C:\WINNT\Symbols.這個變數可以是系統變數,或是使用者環境變數。
雖然您不需要下載並安裝在您正在偵錯的伺服器上的符號,強烈建議。當您下載並安裝在伺服器上的符號時,擷取記錄檔的輸出是 Microsoft PSS 更有用的。

如需有關如何取得 Microsoft 偵錯符號的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
268343? (http://support.microsoft.com/kb/268343/ ) Umdhtools.exe: 如何使用 Umdh.exe 來尋找記憶體遺漏
設定您的伺服器後,您可以執行 ADPlus 以損毀模式。這種模式是由 「 一般 ADPlus 使用案例 」 一節所述。


一般 ADPlus 使用案例

本節將說明一些您可能必須執行 ADPlus 的一般案例。

處理程序停止回應或 CPU 使用率 100 %

在這種情況下,處理程序動態耗用 100 %cpu 的長時間或無限期。以取得處理序或正在耗用 CPU 的處理程序的記憶體傾印的擱置模式執行 ADPlus 之後 發生問題。例如,使用下列命令語法的其中一個:
ADPlus-無回應-p 1896
這個命令會以擱置模式執行 ADPlus,並會產生具有 PID 1896 處理程序的完整記憶體傾印檔案。

ADPlus-無回應-pn myapp.exe
這個命令會以擱置模式執行 ADPlus,並會產生的所有處理程序稱為 「 Myapp.exe 完整記憶體傾印檔案。

ADPlus-無回應-iis-pn myapp.exe-o c:\temp
這個命令會以擱置模式執行 ADPlus,並會產生完整記憶體傾印檔案的 IIS,所有的執行個體的 Mtx.exe 或 Dllhost.exe,和所有處理序稱為 「 Myapp.exe。然後將記憶體傾印檔案 C:\Temp 資料夾中。
當您以擱置模式執行 ADPlus 在 100%的 CPU 條件時,工具會產生記憶體傾印檔案的處理程序或您在命令列指定的處理程序。

附註 在某些罕見的情況下,偵錯工具可能無法附加至處理序的 100%的 CPU 條件之後,或發生當機。如果發生問題之後,您可以執行以擱置模式的 ADPlus,工具可能不會產生記憶體傾印檔案。在這些情況下,最好是附加偵錯工具 之前 發生此問題。若要這樣做,請使用下列命令語法的其中一個,以損毀模式執行 ADPlus:
ADPlus-損毀-p 1896
這個命令會執行 ADPlus 以損毀模式具有 PID 1896 處理程序。ADPlus 會等候例外狀況發生,或是當使用者按下 CTRL + C 在最小化偵錯工具] 視窗中,以產生記憶體傾印檔案,並分離偵錯工具。

ADPlus-損毀-pn myapp.exe
這個命令會執行 ADPlus 以損毀模式,名為 Myapp.exe 處理程序。ADPlus 會等候例外狀況發生,或是當使用者按下 CTRL + C 在最小化偵錯工具] 視窗中,以產生記憶體傾印檔案,並分離偵錯工具。

ADPlus-損毀-iis-pn myapp.exe-o c:\temp
這個命令會執行 ADPlus 以損毀模式,名為 [Myapp.exe] 和 [另一個,處理程序的所有執行個體和 Mtx.exe 或 Dllhost.exe 的所有執行個體。ADPlus 會等候例外狀況發生,或是當使用者按下 CTRL + C,一或多個最小化偵錯工具視窗,以產生記憶體傾印檔案 (或檔案),並分離偵錯工具中 (或偵錯工具)。ADPlus 會置於將 C:\Temp 資料夾的記憶體傾印檔案和記錄檔。
然後, 之後 處理程序停止回應,或使用 100 %cpu 使用率,使用者可以按 CTRL + C 中的最小化偵錯工具視窗 (或 windows),ADPlus 會產生使偵錯工具可以產生處理序 (或處理程序) 的記憶體傾印檔案。

附註 根據預設,ADPlus 只產生迷你記憶體傾印記錄時,使用者按下 CTRL + C 鍵。此設定會節省磁碟空間。在這種情況下,可能會將 ADPlus 設定成產生的完整記憶體傾印檔案,當使用者按下 CTRL + C 時很有用。若要這樣做,請使用 – CTCF 切換。另外,您可以擷取效能記錄檔] 或 [系統監視器記錄檔的最多的時間週期,包括 100%的 CPU 使用率條件通常有幫助。至少這個記錄檔應該在 1 到 5 秒間隔,擷取下列物件:
  • 記憶體
  • 處理程序
  • 處理器
  • 系統
  • 執行緒

處理程序意外結束

在這個案例中,處理程序可能會隨機結束 (或當機) 意外。若要取得程序] 或 [結束處理程序的記憶體傾印檔案損毀模式執行 ADPlus 之前 發生問題。例如,使用下列命令語法的其中一個:
ADPlus-損毀-iis
此命令以損毀模式執行 ADPlus,並使另一個,並在電腦執行的所有 Mtx.exe 或 Dllhost.exe 處理附加 CDB 偵錯工具。ADPlus 然後等候任何初次出現和第二個出現的例外狀況發生。根據預設,ADPlus 置於所有檔案的安裝資料夾的子資料夾因為 -o 參數已經省略。

ADPlus-無訊息-損毀-iis-通知 遠端電腦 -o c:\temp
這個命令執行 ADPlus 時 (無對話方塊中,事件記錄檔記錄所有的輸出) 損毀模式,它將 CDB 偵錯工具附加至另一個,而所有的 Mtx.exe 或 Dllhost.exe 處理序的原因是電腦上執行。因為 -通知 參數,則偵錯工具告知已登入電腦的所有使用者 遠端電腦 當偵測到損毀或程序時,監視便會結束。因為 -o 使用參數,ADPlus 會置於將 C:\Temp 資料夾中的所有輸出。如果資料夾不存在,ADPlus 會建立它。

ADPlus-損毀-iis o \\伺服器\共用
這個命令就是前一個命令不同之處在於它與網路伺服器上記錄所有輸出。建立新的子資料夾中 \\伺服器\共用與本機電腦名稱的子資料夾。因此,如果您在 web 伺服陣列中執行 ADPlus,具有執行 ADPlus 的伺服器陣列中每一部伺服器記錄下自己的唯一資料夾 \\伺服器\共用.(您並沒有建立唯一的資料夾,每一部伺服器。ADPlus 會自動執行此。)
附註 如果您以損毀模式執行 ADPlus,從本機主控台 (而不是從遠端命令殼層中下一節所述),您必須持續登入主控台的偵錯工作階段持續期間。

例如,假設您啟動 ADPlus 以損毀模式,而且您使用 -iis 若要監視 IIS 的選項。當您記錄完主控台時,請在主控台] (和所有其他執行中應用程式) 上執行的 Cdb.exe 複本就會結束。如此一來,就會結束偵錯停駐點,而且正受到監視的處理程序。

若要避免這個問題,您可以鎖定主控台工作階段 (按 CTRL + ALT + DEL 按鍵組合,然後按一下 鎖定電腦) 或從已排定為非互動方式執行遠端命令殼層執行 ADPlus (也就是不要求互動式登入)。

如需有關如何排定遠端命令殼層以非互動方式的詳細資訊,請參閱 「 一般 ADPlus 使用案例: 執行中損毀模式遠端 」 一節]。

MTS 或 COM + 伺服器應用程式意外結束

自訂元件物件模型 (COM) 元件中的 MTS 或 COM + 伺服器應用程式實際執行代理程序 (Mtx.exe 或 Dllhost.exe) 中執行。這些代理程序有內容及設定值,您可以設定透過 [MTS 總管] 中 (如 Windows NT 4.0),或透過 [元件服務 Microsoft 管理主控台 (MMC)] 嵌入式管理單元 (適用於 Windows 2000、 Windows XP 中,與 Windows Server 2003)。

根據預設,MTS 或 COM + 伺服器應用程式會設定成在三分鐘閒置時間後結束。若要確認這些處理程序仍執行附加偵錯工具時,且在監視例外狀況,您必須設定, 保留閒置時執行.

此外,MTS 與 COM + 實作 failfast。Failfast 是為了失敗 (或結束) 的防護措施 MTS / COM + 的處理程序產生未處理的存取違規。

根據預設,failfast 會引發未處理的存取違規例外狀況的 MTS 或 COM + 應用程式中啟用。因此,失敗 MTS / COM + 伺服器應用程式無法升級第二個可能發生存取違規例外狀況 (亦即,結束後第一個機會把存取權限違規)。根據預設,會將 ADPlus 設定第一個出現的例外狀況發生時,產生只迷你記憶體傾印的記錄。

若要成功偵錯 MTS / COM + 伺服器應用程式、 followthese 的步驟執行:
  1. 設定的 MTS / COM + 伺服器應用程式 保留閒置時執行.
  2. 使用 FullOnFirst 若要建立完整的傾印檔案,在第一個出現的例外狀況的參數。
  3. 在損毀模式執行 ADPlus,然後等待應用程式失敗。
附註 因為 MTS 與 COM + 伺服器應用程式,來關閉,因為 failfast 原則可防止程序引發第二個可能發生的例外狀況,您可能只能取得第一個可能發生存取違規的記憶體傾印檔案。

從遠端以損毀模式執行

有許多情況下,當您必須啟動 ADPlus 以損毀模式監視處理程序意外結束一或多個伺服器陣列中的遠端伺服器上的本機用戶端電腦中。通常,在 Windows 2000 中,您透過 Windows 終端機服務。不過,您無法偵錯 Windows NT 4.0 和 Windows 2000 執行不同的視窗工作站中的應用程式。因此,ADPlus 會停用時偵測到它正在執行終端機服務工作階段中損毀模式功能。若要解決這個問題,請使用 Remote.exe 公用程式來共用遠端伺服器建立遠端伺服器啟動命令殼層的批次檔,然後排程使用目標伺服器上執行此批次檔 AT 命令。( AT 命令會使命令殼層以非互動方式,執行與服務類似。)遠端命令殼層就會連接到本機工作站或用戶端電腦使用您用來啟動命令殼層的相同 remote.exe。

若要使用在伺服器上啟動的遠端命令殼層 AT 命令,請依照下列步驟執行:
  • 遠端伺服器上
    假設已安裝到 C:\Debuggers 的偵錯工具。請依照下列步驟執行:
    1. 在 [C:\Debuggers] 資料夾中建立新的批次檔名為 Remoteshell.cmd.
    2. 加入此批次檔中的下面這一行:
      c:\debuggers\remote.exe /s"cmd.exe"remoteshell
    3. 在主控台的伺服器上,或 「 終端機服務工作階段中,開啟新的命令殼層,] 然後輸入下列命令:
      在 15: 00 c:\debuggers\remoteshell.cmd
      位置 15: 00 是一分鐘晚於目前的時間。例如,如果目前的時間是 14: 59,輸入 15: 00.
    4. 等待 AT 若要執行的命令。
    5. 在命令提示字元中,輸入 AT 不含任何參數,以確認該工作執行無誤。
  • 在本機用戶端:
    安裝偵錯工具在本機用戶端電腦上,或 (至少) 複製本機 Remote.exe 公用程式。(根據預設,公用程式被安裝與偵錯在根安裝資料夾)。

    假設偵錯工具和 Remote.exe 公用程式安裝 C:\Debuggers。請依照下列步驟執行:
    1. 在命令提示字元中,切換至 [C:\Debuggers] 資料夾。
    2. 輸入下列命令:
      remote.exe /c 遠端伺服器 remoteshell
      位置 遠端伺服器 是遠端伺服器的名稱。
    3. 您的本機命令殼層現在已連線到遠端命令殼層執行在伺服器上,並在遠端伺服器上 (在本機輸入的所有命令都執行時 DIR c:\ 命令會列出遠端伺服器上的 c 磁碟機的內容)。
    4. 在遠端命令殼層中,您現在可以執行 ADPlus 以損毀模式,如果您正在執行它在本機從主控台。不過,您必須使用 -無訊息 不使用切換所有 ADPlus 會產生預設的對話方塊。如果您不使用 -無訊息 參數,遠端命令殼層會停止回應之後執行 ADPlus,也不會傳回任何提示。發生這個問題時,您必須結束在伺服器上,遠端命令殼層 (Cmd.exe),然後開始新執行個體。
    5. 若要傳送至 ADPlus 目前遠端偵錯透過損毀模式的處理序的偵錯中斷 (CTRL + C),您必須使用 Breakin.exe 公用程式。根據預設,Breakin.exe 會隨偵錯工具在偵錯工具] 資料夾的根目錄中。比方說,若要停止偵錯處理程序識別碼的 1975年正在執行的 IIS (交易),請在遠端命令殼層中輸入下列命令:
      1975 breakin.exe
      或者,您可以使用 [Kill.exe] 指令 (位於根目錄偵錯工具) 來結束任何正在進行偵錯的處理序。

其他資訊和已知的問題

  • 您要如何判斷 ADPlus 已經擷取損毀的相關資訊,或被損毀模式監視處理程序已經結束?

    有數種方式可判斷:
    • 使用 -通知 切換,並確認已啟動信差服務,正在進行偵錯的伺服器上,將會收到通知用戶端電腦上。
    • 在文字編輯器中,開啟.log 檔案出現在每個處理序的輸出資料夾中,請捲動到檔案結尾]。找出下列文字:
           0:070> * -------- AutodumpPlus 4.01 finished running at: --------
           0:070> .time
           Debug session time: Mon Aug 06 15:25:15 2001
           System Uptime: 3 days 17:00:34 
           Process Uptime: 1 days 3:10:38 
           0:070> * -------------------------------------------------------
    • 在 [輸出] 資料夾中,找出包含詞彙"__2nd_chance"的任何.dmp 檔案]。如果這個片語出現在記憶體傾印記錄的標籤中,處理程序已意外地結束。
    • 在 [輸出] 資料夾中,找出包含詞彙"__Process_was_shutdown"的任何.dmp 檔案]。如果這個片語出現在記憶體傾印記錄的標籤中,系統管理員結束處理程序或者它是 MTS / COM + 應用程式,處理程序結束,因為它達到閒置的限制。
    • 在 [輸出] 資料夾中,找出包含詞彙"__CTRL-C"任何.dmp 檔]。如果這個片語出現在記憶體傾印記錄的標籤中,[偵錯中斷擲回例外狀況的 dll 所從主控台中的程序或使用者已按下的 CTRL + C 執行 (或使用 Breakin.exe,如果從遠端執行 ADPlus) 若要停止目前的偵錯工作階段。
  • 您必須在執行 ADPlus 的系統上安裝 Windows 指令碼主機元件。若要下載 Windows 指令碼主機,請造訪下列 Microsoft 網站:
    http://msdn2.microsoft.com/en-us/library/ms950396.aspx (http://msdn2.microsoft.com/en-us/library/ms950396.aspx)
    附註 如果您有安裝下列的 Microsoft 產品,可能已經安裝 Windows 指令碼主機元件:
    • Microsoft Ie 5
    • Microsoft Office 2000
    • Microsoft Visual InterDev 6.0
    • Microsoft Visual Studio 6.0
    • Microsoft Windows NT 選項套件
    • Microsoft Windows 2000
    • Microsoft XP Windows
    • Microsoft Windows Server 2003
    • Microsoft Windows Vista
  • -iis 只有當切換 works 網際網路資訊服務 (IIS) 4.0 或網際網路資訊服務 (IIS) 5.0。x 已安裝。
  • 當您以無訊息模式執行 ADPlus 時,工具會記錄到事件記錄檔的資訊。
  • 如果您使用 -o 參數,指定的路徑必須包含一個以上不存在的資料夾。例如:
    1. 您指定 -o c:\temp1\temp2.但是,C:\Temp1 和 \Temp2 資料夾不存在。
    2. 您會收到錯誤訊息中說明的資料夾不存在,並 ADPlus 將不會建立它們的 ADPlus。
    如果您只指定 -o c:\temp1,如果 ADPlus 會建立 C:\Temp1 資料夾不存在,然後再將所有輸出檔都放在該資料夾中。如果您想要指定多個子資料夾,而且您使用 -o 切換,請確認在執行 ADPlus 之前,存在於所有的子資料夾。
  • 在 COM + 中,您可以設定伺服器上啟動偵錯工具套件 進階 在索引標籤 屬性 封裝的對話方塊。如果您啟用 在 [偵錯工具中啟動 選項,ADPlus 無法將附加至處理序的 CDB 偵錯工具。根據預設,只有一個偵錯工具可以附加至處理序一次。
  • 當遠端程序呼叫 (RPC) 進行分析時,ADPlus 為分析中損毀模式,另一個處理序已經結束 (刻意或意外) 的記錄檔的建立程序所要的處理程序可能包含一或多個下列例外狀況:
    未知的例外狀況的程式碼 80010105 (第一次機率)
    未知的例外狀況的程式碼 800706be (第一次機率)
    未知的例外狀況的程式碼 800706ba (第一次機率)
    這些例外狀況是典型的。RPC 呼叫至不存在或失敗的處理序被監視的處理程序時,會引發這些例外狀況。

    此外,如果 ADPlus 監視該處理程序 ADPlus 偵錯記錄檔中的另一個,下列的例外狀況可能會出現在記錄檔中:
    未知的例外狀況的程式碼 800706bf (第一次機率)
    IIS 會呼叫失敗跨處理序 (高度隔離) 網站之後,通常會出現這個例外狀況。接下來還可能是下列例外狀況的兩個執行個體:
    未知的例外狀況的程式碼 800706ba (第一次機率)

?考

如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
323478? (http://support.microsoft.com/kb/323478/ ) 您無法透過 「 終端機伺服器工作階段偵錯

這篇文章中的資訊適用於:
  • Microsoft Internet Information Services 6.0
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Server 3.0
  • Microsoft Windows 2000 Standard Edition
  • Microsoft Windows XP Service Pack 2
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Windows Vista 商用進階版
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
關鍵字:?
kbbug kbdebug kbhowto kbmt KB286350 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:286350? (http://support.microsoft.com/kb/286350/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。