2011-01-21 10 views
5

私は、プロダクションサーバー上にあるクラッシュダンプを解析するWinDbgツールを発見しようとしています。クラッシュダンプ - WinDbgを使用して.NETアプリケーションでクラッシュダンプを解決する

私は!analyze -vを実行すると、私が手:

0:000> !analyze -v 
******************************************************************************* 
*                    * 
*      Exception Analysis         * 
*                    * 
******************************************************************************* 

GetPageUrlData failed, server returned HTTP status 404 
URL requested: http://watson.microsoft.com/StageOne/w3wp_exe/7_0_6002_18005/49e03238/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1 

FAULTING_IP: 
+14935130 
00000000`00000000 ??    ??? 

EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff) 
ExceptionAddress: 0000000000000000 
    ExceptionCode: 80000003 (Break instruction exception) 
    ExceptionFlags: 00000000 
NumberParameters: 0 

FAULTING_THREAD: 00000000000029b0 

DEFAULT_BUCKET_ID: WRONG_SYMBOLS 

PROCESS_NAME: w3wp.exe 

ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached. 

EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid 

MOD_LIST: <ANALYSIS/> 

NTGLOBALFLAG: 0 

APPLICATION_VERIFIER_FLAGS: 0 

MANAGED_STACK: !dumpstack -EE 
OS Thread Id: 0x29b0 (0) 
Child-SP   RetAddr   Call Site 

PRIMARY_PROBLEM_CLASS: WRONG_SYMBOLS 

BUGCHECK_STR: APPLICATION_FAULT_WRONG_SYMBOLS 

LAST_CONTROL_TRANSFER: from 000000007749c0b0 to 00000000775e6d5a 

STACK_TEXT: 
00000000`0012f6c8 00000000`7749c0b0 : 00000000`00000000 000007fe`faf07e6b 00000000`00000000 000007fe`f9c015f0 : ntdll!ZwWaitForSingleObject+0xa 
00000000`0012f6d0 000007fe`f9c03e74 : 00000000`00000158 00000000`ffb35de0 00000000`00000000 00000000`00000158 : kernel32!WaitForSingleObjectEx+0x9c 
00000000`0012f790 00000000`ffb3235a : 00000000`fffffffe 00000000`00000001 00000000`007e6400 00000000`0000008c : w3wphost!AppHostInitialize+0x280 
00000000`0012f7f0 00000000`ffb33b71 : 00000000`00000000 00000000`ffb33ce5 00000000`00000000 00000000`00000000 : w3wp!wmain+0x466 
00000000`0012f980 00000000`7748be3d : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : w3wp!PerfStopProvider+0x199 
00000000`0012f9c0 00000000`775c6a51 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd 
00000000`0012f9f0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x1d 


STACK_COMMAND: ~0s; .ecxr ; kb 

FOLLOWUP_IP: 
w3wphost!AppHostInitialize+280 
000007fe`f9c03e74 f6052998000003 test byte ptr [w3wphost!g_dwDebugFlags (000007fe`f9c0d6a4)],3 

SYMBOL_STACK_INDEX: 2 

SYMBOL_NAME: w3wphost!AppHostInitialize+280 

FOLLOWUP_NAME: MachineOwner 

MODULE_NAME: w3wphost 

IMAGE_NAME: w3wphost.dll 

DEBUG_FLR_IMAGE_TIMESTAMP: 49e0420f 

FAILURE_BUCKET_ID: WRONG_SYMBOLS_80000003_w3wphost.dll!AppHostInitialize 

BUCKET_ID: X64_APPLICATION_FAULT_WRONG_SYMBOLS_w3wphost!AppHostInitialize+280 

WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/w3wp_exe/7_0_6002_18005/49e03238/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1 

Followup: MachineOwner 

は、私は本当に何が何であるかを考え出す苦労を持っています。私はWinDbgのに本当に新しいだ

EXCEPTION_CODE and STACK_TEXT. 

、そしてそれは私がこのツールを使用している最初の時間です:私が理解から、ここに興味深い部分です。私はGoogleの検索に苦労しているので、正しいものを探しているわけではないと思います。

私は何をしたいのですが次のとおりです。

  1. は、各機能

の入力パラメータを参照してください

  • てみstack_textの出力形式を理解することですその正しい道へこの問題に近づく?

  • +0

    私は!analyze -vと同じ結果を得ました。何が問題なのか教えてください。 – AlexMAS

    答えて

    9

    ウェブ上やWinDbgヘルプファイル(.chm)で利用できるいくつかの良いチュートリアルがあります。よい場所はWinDBG tutorial - IntroductionまたはTess' blog, If broken it is, fix it you shouldです。

    あなたの場合、ステップ1はWinDbgに正しいシンボルを指すことになります。上の出力から、あなたのsympathが間違っているか、PDBファイルを指していないことは明らかです。デバッガで次の操作を行います

    .sympath SRV*c:\symbols*http://msdl.microsoft.com/download/symbols 
    

    これは、OSコンポーネントは、Microsoftのパブリックシンボルサーバーを使用するには、デバッガを指しています。あなたのc:\symbolsフォルダにPDBファイルをキャッシュします。別のシンボルパス(アプリケーションのPDBファイルを含むフォルダなど)を追加するには、 ';'区切られたパスのリストを使用するか、または単に.sympath+コマンドを使用して、新しいパスを細かく追加します。

    シンボルパスを設定したら、!analyze -vを再度実行するか、上記のチュートリアルの手順に従って、より良い結果が得られるかどうかを確認してください。

    +0

    ありがとうございます。私はこれらのチュートリアルを今すぐ調べ始めるでしょう。 私はすでにWinDbgでシンボルパスを設定していましたが、ロードされていないと言って驚いています。どのようにそれを見たのですか?そして、あなたはその問題が何であるか知っていますか? パスはコンピュータ上の有効なパスに設定されており、URLは正しいです。 –

    +1

    ".symfix"コマンドはシンボルパスをMS symbol serverに設定します。シンボル照合の失敗を得るには "!sym noisy"を試してください。 – Naveen

    +1

    応答が遅れて申し訳ありません。間違った記号の2つの兆候がありました。まず、!analyzeは明らかな「WRONG_SYMBOLS」メッセージを主な問題として示しました。第2に、w3wpへの関数のオフセットは少し大きい(1つは0x280、もう1つは0x199)。 Naveenが言ったように、!sym noisyの後に.reloadが続くと、どこにpdbsがあるのか​​、なぜそうではないのかを詳細に知ることができます。 – nithins

    5

    正しいシンボルがある場合は、スタックトレースを読み取る必要があります。

    1. ダンプファイルをロードしてください。
    2. 実行.symfix
    3. オープン「シンボルファイルパス」メニュー
    4. は、パラメータを持つスタックをダンプするために「リロード」のチェックボックス
    5. 実行!clrstack -pを確認し、アプリケーションの.PDBファイル
    6. へのパスを追加します。
    関連する問題