文章編號: 892277 - 上次校閱: 2007年5月18日 - 版次: 2.4 ASP.NET 使用 WinDbg 和 SOS 副檔名的疑難排解
ASP.NET 支援語音資料行ASP.NET 使用 WinDbg 和 SOS 副檔名的疑難排解若要自訂您的需要此資料行的 我們想要邀請您送出您的想法,有關您感興趣的主題,而且在將來知識庫文件和支援語音資料行,處理您想要查看的問題。您可以送出您的想法和使用 Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) 表單的意見反應。另外還有連結至表單底部的 這個資料行。在此頁中再次,Hello,歡迎來到 2005 年一月版本的支援語音資料行。再一次我想要感謝 Jim Cheshire 支援工程師此處在 Microsoft 支援 ASP.NET,對他所佔的比重。曹具有很棒的想法,支援語音資料行,而且想要繼續共用它們。 查閱 Jim 的貢獻上個月和透過下個月或操作,並如往常傳送您為未來的資料行的建議給我們。感謝您 Jim! Jim 已使用的 Microsoft 六年 FrontPage、 VB 和 ASP.NET 小組成員。在這段時間他已經在 MSDN 上, 寫入 Office 開發人員中心,而他是 FrontPage 選擇性版使用 Microsoft Office FrontPage 2003 中的書籍作者。曹也有在網站上他用來提供可用增益集的 FrontPage 讓網頁開發人員進行最多出的 Microsoft 產品。 以下是該網站位址: http://www.jimcosoftware.com
(http://www.jimcosoftware.com)
因此請向上一個椅子提取、 開始進行的您鞋與讀取透過所有有關疑難排解 ASP.NET,我們資料行和記住可以提交您的想法對我們使用包含在每個資料行中的 「 FOR IT ASK 」 連結我們發佈。 Jeremy ASP.NET 使用 WinDbg 和 SOS 副檔名的疑難排解良好的開發人員將規劃任何應變措施。自然,該計劃的一部份開發某些健全的例外處理常式。 許多 ASP.NET 開發人員將會處理的例外狀況,藉由與精美的格式網頁呈現使用者,然後記錄供稍後分析檔案中的 [例外狀況資訊。 案例:您開發並測試新的 ASP.NET 應用程式,會記錄成記錄檔的例外狀況。 將 ASPX 網頁和組件部署至實際執行 Web 伺服器中。 當人們使用您的應用程式時,他們看錯誤頁面,但沒有例外狀況記錄寫入記錄檔。 您也發現說 Aspnet_wp.exe 意外停止的應用程式事件檢視器 」 記錄檔中有許多 ASP.NET 事件這是常見的問題,我們看到在 [開發 o 人 h 員 ? 工 u 具 ? 支援類型,而且大多數的我們的客戶真的不知道如何著手進行疑難排解它。更糟的是為可怕的 「 伺服器應用程式無法使用 」 錯誤訊息。這個月我會告訴您您可以要如何疑難排解這些類型的偵錯工具的 Windows 的問題。 免責聲明:如果您呼叫的 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 支援我們通常可能會要求您傳送給我們或擱置傾印檔案損毀傾印檔案。傾印檔案,在本文中的分析將會是相當簡單又快速。在許多情況下一個問題的原因不明顯,而且它可能會需要取得到根本原因分析的許多小時。不要讓簡易性和直線-forwardness 此傾印檔案分析的騙您到它們是這麼簡單的想法。大部分,在實際上都是不! 取得準備我們開始之前就必須為 Windows 安裝偵錯工具。如果即使您已經安裝複本請確定您有最新版本,因為我們會使用副檔名為 Managed 偵錯也就只隨附偵錯工具 Windows 的最新版本。您可以從下列 Microsoft 網站下載偵錯工具 Windows 的: http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
(http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx)
您在安裝偵錯工具的 Windows 時您可能要執行自訂安裝到 C:\Debuggers 資料夾。我們將會執行工具從命令] 列並如果路徑短一個它將會進行這樣做因此更容易為您。安裝完成之後,您會要下載範例 ASP.NET 頁面會當機背景工作處理序。http://download.microsoft.com/download/c/a/1/ca1c6329-3b3f-4d9e-a76d-54c78d3ddfbc/crash.exe
(http://download.microsoft.com/download/c/a/1/ca1c6329-3b3f-4d9e-a76d-54c78d3ddfbc/crash.exe)
請注意為了讓您就可以產生使用此頁的傾印檔案,您必須執行 ASP.NET 1.1 中與服務封包 1 (SP1) 安裝。未安裝 SP1,此頁面將會執行而不會產生損毀。您也要為 WinDbg 設定符號路徑。 符號並不需要 Managed 組件上的函式名稱解析的但您必須為原生函式解析符號。若要在 WinDbg 中設定符號路徑:
建立損毀傾印檔案在這個逐步解說中按一下範例] 頁面上的按鈕將會導致 ASP.NET 工作者處理程序,以損毀。在許多情況下不會知道產生損毀的確切步驟。在實際上實際執行應用程式可能會損毀,在某些隨機時間。您會很快就發現不論預測或隨機,就會發生當機。建立傾印檔案是相當容易使用 Adplus 自動化整個程序的 VBScript 檔案。若要產生傾印檔案,您需要先瀏覽到範例頁面。(不要按一下按鈕)!成功地處理頁面之後您知道已被啟動 Aspnet_wp.exe 處理序 (或在 Windows Server 2003 上的 W3wp.exe 處理序)。現在您已經準備好要偵錯工具附加至背景工作處理序,使其損毀時,您可以擷取傾印檔案。 若要建立傾印檔案:
286350?
(http://support.microsoft.com/kb/286350/
)
如何使用 ADPlus 疑難排解 「 擱置 」 和 「 當機" 執行此命令之後會顯示幾個對話方塊。按一下 [在每個對話方塊中的 [確定]。 您現在應該看到任務長條圖上的按鈕,偵錯器,CDB,偵錯工具應用程式的名稱。不過,它可能會不同視窗中。Note 當您執行 Adplus 損毀模式中時,您必須是在 Web 伺服器上主控台。您無法從遠端以損毀模式執行 Adplus。 現在您已準備好產生損毀!按一下 [在頁面損毀背景工作處理序] 按鈕。如果您有啟用在 Visual Studio.NET JIT 偵錯,一個對話方塊便會出現讓您知道發生例外狀況,但附加偵錯工具無法處理它。如果您沒有 JIT 啟用偵錯,而不顯示任何對話方塊將會建立傾印檔案。不論是哪一種情況您看到 CDB 按鈕會從任務列中消失後已經傾印檔案,而且您準備好要繼續下一個步驟中。 簽出傾印檔案
摺疊此圖像 ![]() 您可以在命令提示字元下輸入 kb 命令來查看錯誤堆疊。以下是從傾印檔案輸出: 0:000> kb ChildEBP RetAddr Args to Child 00771018 791b6173 00000643 00000000 00b59bc0 mscorwks!_EH_prolog+0x2 00771928 791b60c0 00771a04 00000000 00000000 mscorwks!EEClass::DoRunClassInit+0xbe 0077193c 791d75a7 00771a04 00771a50 00b59bc0 mscorwks!MethodTable::CheckRunClassInit+0x1d 00771a14 791d7746 00000000 0086fb88 00771a50 mscorwks!MethodDesc::DoPrestub+0x28e 00771a2c 00a92f76 00771a50 0180f154 00ee5cd4 mscorwks!PreStubWorker+0x42 WARNING: Frame IP not in any known module. Following frames may be wrong. 00773a38 0337f2bc 00f8463c 00eb593c 00ee5cc8 0xa92f76 00773a64 031cd7e4 00eb593c 0180ea7c 00f84560 0x337f2bc 00773aac 033a3299 00000000 00eb593c 0180ea7c 0x31cd7e4 00773b50 033a3031 00000001 00000000 0180e238 0x33a3299 00773bec 0332ee47 00edb274 0180df00 00f8463c 0x33a3031 00773c28 0332e71b 0180df00 033a35c5 0180d870 0x332ee47 00773cc4 033a3031 00000001 00000000 0180d2b4 0x332e71b 00773d60 0332ee47 00edb274 0180cf7c 00f8463c 0x33a3031 00773d9c 0332e71b 0180cf7c 033a35c5 0180c8ec 0x332ee47 00773e38 033a3031 00000001 00000000 0180c330 0x332e71b 00773ed4 0332ee47 00edb274 0180bff8 00f8463c 0x33a3031 00773f10 0332e71b 0180bff8 033a35c5 0180b968 0x332ee47 00773fac 033a3031 00000001 00000000 0180b3ac 0x332e71b 00774048 0332ee47 00edb274 0180b074 00f8463c 0x33a3031 00774084 0332e71b 0180b074 033a35c5 0180a9e4 0x332ee47 Note 如果您執行多處理器系統 (或超執行緒的系統) 上您會看到函數呼叫中而非 mscorwks mscorsvr。 因為 WinDbg 下載 mscorwks 的符號,您可以看到 Mscorwks.dll 中的函數名稱。但是,下列 mscorwks 到呼叫,看到沒有模組名稱和沒有函式名稱。那是什麼 Managed 程式碼 (通用語言執行階段下執行的程式碼) 起來 WinDbg 在預設情況下,並顯然不很有幫助的輸出。若要查看該 Managed 程式碼中發生什麼事,您需要使用 WinDbg 為 SOS 延伸模組。 SOS 副檔名SOS 是可讓您偵錯 Managed 程式碼的 WinDbg 的延伸。SOS 新增許多指令均可著重在偵錯 Managed 應用程式的 WinDbg,並有許多都是特定的 ASP.NET。延伸模組是 DLL 檔,稱為 Sos.dll,而它位於 Clr10] 資料夾內的偵錯工具的 Windows 安裝的位置之資料夾。若要載入 SOS 副檔名,請在命令提示字元中 WinDbg 輸入下列命令: .load clr10\sos 不要略過指令的開頭期間!如果一切順利,您將移回到命令提示字元。如果發生錯誤請確定您有最新版本的偵錯工具的安裝 Windows。 我們將討論幾個命令的 SOS 偵錯損毀傾印檔案,但請隨意探索 SOS 中其他的命令上您自己的時間。您可以使用 ! 協助 命令以取得的命令和簡要說明每個清單。 深入根本原因既然載入 SOS 讓我們看看部分有用疑難排解損毀傾印檔案中的指令。讓我們來看看目前執行緒的執行緒 0 受管理的堆疊。我們將會執行該使用 「 ! clrstack 命令。型別 ! clrstack 在命令提示字元。WinDbg 啟動堆疊傾印。一般的堆疊應該傾出完全以在幾秒為單位。在這種情況下輸出似乎永遠移。請繼續進行,並按下 CTRL BREAK (或按一下 中斷 WinDbg 上的 [偵錯] 功能表上),然後讓我們來查看。 Here's a portion of the stack: 若要更好的了解發生了什麼事這裡,您可以取得更詳細的輸出從堆疊執行 ! clrstack s 命令。這樣可讓您完整的堆疊。以下是一些該輸出。為完整從這個命令輸出,建立傾印檔案,使用 [範例] 網頁,然後再執行指令]。我已編輯過它這裡因為輸出是相當詳細資訊。 您可以因此讓我們看一下,請參閱什麼已在該要求中傳遞請參閱在此牌 HttpRequest 物件。我們將會執行該使用 [傾印物件指令 ! 做。此指令採用一個參數: 要傾印物件的位址。在上述輸出中地址會是輸出第二個十六進位數字。 這裡是 HttpRequest 物件的輸出。我已編輯過這個輸出,這是因為的簡潔起見 回查看從輸出 ! clrstack。如果您仔細看起來,您會看到按鈕的 Click 事件會引發每次載入頁面。這會告訴您處於回傳狀態每次載入頁面。您也可以告訴從堆疊中的 [按一下] 事件呼叫 Server.Transfer 而定。因此,停止 ASP.NET 將當機載入此頁面時,您必須停止這將被回傳每次頁面載入至 [Server.Transfer 由於。 Note 如果您在 ASP.NET Framework 1.1 中與 Server.Transfer SP1 安裝並保留表單的資料,它永遠會造成這個問題。 如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件: 839521?
(http://support.microsoft.com/kb/839521/
)
FIX: 的 Server.Transfer 方法會造成堆疊溢位,並會使 ASP.NET 背景工作處理序停止回應 Server.Transfer 方法有兩個參數 ; 第一個是要執行應該轉移的 URL,而第二個是布林值,指定是否應該保留表單資料。如果我們保留表單資料,會發生什麼事?比方之一是,將會認為,ASP.NET 回傳。藉由將第二個參數設定為 false Server.Transfer 呼叫],因此,可以停止這個損毀。自動換行本文呈現方式您可以使用 WinDbg 和 SOS 偵錯 ASP.NET 應用程式的簡短逐步解說。本文的目的是要為您介紹的一些概念和術語參與使用者模式偵錯的。它比原始程式碼偵錯,設定的不同技能,並取得擅於它需要大量的時間投資。它是由經驗學到的技能。為了更多經驗建議您載入組成 ASP.NET 應用程式開發或執行環境中,並在不同時間擷取一些擱置傾印檔案。您可以藉由使用下列命令,以擱置模式執行 Adplus 執行的動作: cscript adplus.vbs-擱置-pn aspnet_wp.exe-o c:\aspnet_dump 這個命令會立即傾印 aspnet_wp.exe 程序,並在 C:\Aspnet_dump 資料夾中建立傾印檔案。這類的當機傾印檔案可以執行從遠端連線。 Microsoft 的模式和實務群組 (PAG) 已經也寫入某些絕佳深入的發行項上偵錯使用 WinDbg 的.NET 應用程式。請造訪下列 Microsoft 網站,以檢視這些文件: http://msdn2.microsoft.com/en-us/library/ms954594.aspx
(http://msdn2.microsoft.com/en-us/library/ms954594.aspx)
的確,我在撰寫本文的目標之一是提供您善加利用絕佳 PAG 已提供的文件的必要的基礎。我強烈建議您在善加利用它們。看您回這裡當我教您如何使用 WinDbg 和 SOS 副檔名分析損毀傾印檔案的下個月。直到下一次 曹 Cheshire 支援工程師 Microsoft 開發人員支援 如往常請隨意送出您想要在將來解決資料行的主題或使用 Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) 表單的知識庫中的想法。
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:892277?
(http://support.microsoft.com/kb/892277/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方

