2011-01-21 11 views
5

Próbuję odkryć narzędzie WinDbg do analizy zrzutu awaryjnego, który mamy na naszym serwerze produkcyjnym.Crash dump - rozwiązywanie problemu niezarządzanego awaryjnego kodu w aplikacji .NET przy użyciu WinDbg

Kiedy biegnę !analyze -v, otrzymuję:

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 

naprawdę trudno dowiedzieć, co jest co. Z tego co rozumiem, oto interesujący:

EXCEPTION_CODE and STACK_TEXT. 

Jestem naprawdę nowego do WinDbg, i to pierwszy raz używam tego narzędzia. Zmagam się z moją wyszukiwarką Google, więc domyślam się, że nie szukam właściwej rzeczy.

Co chciałbym zrobić, to:

  1. Zrozumieć format wyjściowy stack_text
  2. spróbować sprawdzić parametry wejścia każdego funkcji

Czy to właściwa droga podejść do tego problemu?

+0

Mam taki sam wynik! Analizy -v. Proszę powiedz mi, jaki był problem? – AlexMAS

Odpowiedz

9

Istnieje kilka dobrych samouczków dostępnych w Internecie, a nawet w pliku pomocy WinDbg (.chm). Dobrym miejscem będzie WinDBG tutorial - Introduction lub Tess' blog, If broken it is, fix it you should.

W twoim przypadku, krok 1 polegałby na wskazaniu WinDbg prawidłowych symboli. Z powyższego wyjścia wynika, że ​​twoja sympath jest niepoprawna lub nie wskazuje żadnych plików PDB. Wykonaj następujące czynności w debuggera:

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

ta wskaże debuggera do korzystania z publicznego serwera Microsoft symboli komponentów systemu operacyjnego; spowoduje buforowanie plików PDB do folderu c:\symbols. Aby dodać kolejną ścieżkę symbolu (na przykład folder zawierający pliki PDB aplikacji), można użyć znaku ";" ograniczoną listę ścieżek lub po prostu użyj polecenia .sympath+, aby dodać nowe ścieżki fragmentarycznie.

Po skonfigurowaniu ścieżki symbolu ponownie uruchom ponownie !analyze -v lub wykonaj czynności opisane w powyższym samouczku, aby sprawdzić, czy uzyskasz lepsze wyniki.

+0

Dziękujemy za dane wejściowe. Zacznę teraz zaglądać do tego tutoriala. Chociaż już skonfigurowałem ścieżkę symboli w WinDbg, więc jestem zaskoczony, że mówisz, że nie są one załadowane. Jak to widzisz?I czy wiesz, jaki może być problem? Ścieżka jest ustawiona na poprawną ścieżkę na moim komputerze, a adres URL jest poprawny. –

+1

Polecenie ".symfix" ustawi ścieżkę symbolu na serwerze symboli MS. Spróbuj "! Sym noisy", aby uzyskać informacje o awariach symboli. – Naveen

+1

Przepraszamy za opóźnienie w odpowiedzi. Znaleźli dwa znamienne znaki złych symboli. Po pierwsze,! Analiza wykazała oczywisty komunikat "WRONG_SYMBOLS" jako główny problem. Po drugie, przesunięcie funkcji do w3wp jest trochę duże (0x280 dla jednego, 0x199 dla drugiego). Jak powiedział Naveen,! Sym hałaśliwy, po którym następuje .reload pozwoli ci uzyskać szczegółowe informacje o tym, gdzie znajduje się pdbs i dlaczego tak nie jest. – nithins

5

Ślad stosu powinien być czytelny, jeśli masz prawidłowe symbole. Możesz spróbować czegoś takiego:

  1. Załaduj plik zrzutu.
  2. Run .symfix
  3. Otwórz 'Symbol File Path' menu
  4. Dodaj ścieżkę do plików twojej aplikacji .pdb
  5. Sprawdzić reload '' wyboru
  6. Run !clrstack -p zrzucić stos z parametrami.