Zine.net online

Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc
w Szukaj

mgrzeg.net - Admin on Rails :)

Memory dump a symbole - rozwiązanie

Zalany falą odpowiedzi na zadanie z poprzedniego odcinka nie zwlekam dłużej i uchylam rąbka tajemnicy.

Zaczynam od ściągnięcia pliku zrzutu i załadowania go do WinDbg. Uruchamiam zatem program, ctrl + d, po czym wskazuję plik zrzutu:

Microsoft (R) Windows Debugger  Version 6.7.0005.0
Copyright (c) Microsoft Corporation. All rights reserved.

Loading Dump File [C:\Dev\dumps\pdbtester.dmp]
User Mini Dump File: Only registers, stack and portions of memory are available
Symbol search path is: srv*c:\websymbols\*http://msdl.microsoft.com/download/symbols;
srv*C:\websymbols*http://msdl.microsoft.com/downloads/symbols
Executable search path is:
Windows Vista Version 7601 (Service Pack 1) MP (8 procs) Free x86 compatible
Product: WinNt, suite: SingleUserTS
Debug session time: Thu Aug 11 21:12:37.000 2011 (GMT+2)
System Uptime: not available
Process Uptime: 0 days 0:10:36.000
...........................
eax=0029338c ebx=0028f18c ecx=0267d094 edx=00000000 esi=0055c560 edi=00000000
eip=00460099 esp=0028f158 ebp=0028f160 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
00460099 8b4df8          mov     ecx,dword ptr [ebp-8] ss:002b:0028f158=00000007
*** ERROR: Module load completed but symbols could not be loaded for PDBTester.exe

Sprawdzam symbole dla badanego procesu

0:000> lm m pdb*
start    end        module name
00f20000 00f28000   PDBTester   (no symbols)          

a następnie aktualne ścieżki symboli oraz źródeł:

0:000> .sympath
Symbol search path is: srv*c:\websymbols\*http://msdl.microsoft.com/download/symbols;
srv*C:\websymbols*http://msdl.microsoft.com/downloads/symbols
0:000> .srcpath
Source search path is: srv*

Zgodnie z opisem ustawiam zatem ścieżkę symboli, a srcpath pozostawiam bez zmian, bowiem jest taka, jak być powinna (pisałem o tym przy okazji serwera źródeł):

0:000> .sympath srv*http://zine.net.pl/symbols
Symbol search path is: srv*http://zine.net.pl/symbols

Poniżej zrzut ekranu (Rys. 1), jaki mam w tym momencie

Rys. 1 Okno WinDbg przed zaladowaniem pliku z symbolami

Sprawdzam w menu debug, czy mam zaznaczone opcje 'Source Mode' i 'Resolve Unqualified Symbols' i przeładowuję symbole badanego procesu:

0:000> .reload /f pdbtester.exe

i dzieje się coś nieoczekiwanego - ładuje się okno z kodem źródłowym wraz aktualnym stanem aplikacji :). W ramach metody Main klasy pl.net.zine.Articles.Program na niebiesko zaznaczona jest linia z instrukcją, która miała za moment być wykonana i oczywiście możemy się domyślać, że spowoduje ona wypisanie na  konsoli cyfry '7' :)
Sprawdzam jeszcze stan symboli:

0:000> lm m pdb*
start    end        module name
00f20000 00f28000   PDBTester   (private pdb symbols)  C:\dbgtools.6.7.5.0\sym\PDBTester.pdb\D02C9D4C361D49FABEDFB65B7DA5635A1\PDBTester.pdb

i w tym momencie moje okno WinDbg wygląda następująco (Rys. 2):

Rys. 2 Okno WinDbg po załadowaniu pliku z symbolami

Na czerwono zaznaczyłem ścieżkę do pliku z kodem - WinDbg odczytał z pliku symboli informację o jego położeniu i grzecznie pobrał :) A do wszystkiego wystarczyło tylko ustawienie srcpath jako srv* i wskazanie url dla symboli.

Mam w planach tekst o zaawansowanych funkcjach procmona oraz procexpa, właśnie w związku z plikami symboli, jednak przy braku zainteresowania tematyką nie wiem, czy nie odłożyć go w czasie na 'kiedyś tam'. Jest ktoś zainteresowany tekstem na ten temat, czy znowu cisza? :)

Opublikowane 16 sierpnia 2011 15:48 przez mgrzeg

Powiadamianie o komentarzach

Jeżeli chciałbyś otrzymywać email gdy ta wypowiedź zostanie zaktualizowana, to zarejestruj się tutaj

Subskrybuj komentarze za pomocą RSS

Komentarze:

 

Xyz said:

Niestety nie mogę tego powtorzyć. Okienko z kodem źródłowym mi się nie otwiera.

Wykonuję dokładnie krok po kroku te same instrukcje.

sierpnia 17, 2011 15:26
 

mgrzeg said:

Sorry za tak długą ciszę.

Niech odpowiedzią na ten komentarz będzie mój wpis:

http://zine.net.pl/blogs/mgrzeg/archive/2011/08/18/debuggowanie-ze-r-d-ami-why-microsoft.aspx

Tak, to była pułapka i prawdę powiedziawszy czekałem, aż ktoś zada to pytanie - jest to bowiem najlepszy dowód, że teksty o WinDbg i symbolach da się czytać (a nie tylko przeglądać!).

Xyz, dzięki! :)

sierpnia 18, 2011 18:22
 

Paula said:

koniecznie napisz o procexpie i  procmonie, Twoja grupa followersow czeka :-)

sierpnia 20, 2011 13:57

Co o tym myślisz?

(wymagane) 
(opcjonalne)
(wymagane) 

  
Wprowadź kod: (wymagane)
Wyślij

Subskrypcje

W oparciu o Community Server (Personal Edition), Telligent Systems