Jak wykonać dump pamięci aplikacji

Czy da się zajrzeć we wnętrze działającej aplikacji? Zdecydowanie nie jest to trywialne. Można jednak wykorzystać do tego dump pamięci (zrzut pamięci). W niektórych przypadkach umożliwia on diagnostykę stanu aplikacji lub całego systemu.

Zrzut pamięci zawiera zapis stanu pamięci roboczej programu. Mogą znajdować się tam różne przydatne informacje dotyczące rejestrów, stanu systemu itd. Przy użyciu tzw. pliku symboli (PDB) możliwe jest dokładniejsza analiza. Jest to jednak dość zaawansowane zadanie, czym nie będę się tu zajmować. Z punktu widzenia testera, najważniejsze jest dostarczenie możliwie najpełniejszej informacji na temat błędu, odkładając na razie analizę programistyczną na bok.

W jakich przypadkach przydatne może być wygenerowanie zrzutu?

  • Gdy program zużywa dużą ilość zasobów (procesora, pamięci, sieci, urządzeń). Może zapętlił się? Czeka na jakiś wątek?
  • Gdy jawnie wystąpił wyjątek i program zostanie zamknięty.

Jak wykonać dump pamięci?

Opcji jest kilka. Opiszę pokrótce niektóre z nich.

  • Program NotMyFault – powoduje on celową awarię systemu, co za tym idzie, wywołanie tzw. blue screen of death (BSOD) i wykonanie pełnego dumpa całej pamięci systemu. Użycie  tej opcji jest uzasadnione w przypadku diagnostyki programów zintegrowanych z systemem Windows, na przykład sterowników.
    https://docs.microsoft.com/en-us/sysinternals/downloads/notmyfault
  • Program ProcessExplorer – ten sympatyczny, kolorowy program jest rozbudowaną wersją Task Managera (Menedżer Zadań) znanego z systemu Windows. Umożliwia bardziej szczegółowy podgląd procesów uruchomionych w systemie. Aby wykonać zrzut pamięci programu, wystarczy z drzewa wybrać interesujący nas proces i z menu kontekstowego wybrać pełny dump albo mini dump.
    https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer
ProcessExplorer umożliwia także tworzenie dumpów

ProcessExplorer umożliwia także tworzenie dumpów

  • Menedżer Zadań – podobnie jak w przypadku ProcessExplorer, wystarczy wybrać proces i z menu wybrać interesujący rodzaj zrzutu. Co ciekawe, nie zawsze udaje się wykonać dump z Task Managera, lepiej sprawuje sie ProcessExplorer, z którym jak dotąd nie miałam problemów.
Dump pamięci w Task Managerze

Dump pamięci w Task Managerze

Wyczerpujący materiał na temat konfiguracji samych zrzutów (m.in. rozróżnienia między „małym zrzutem” a „pełnym zrzutem”), ich wykonywania i używania można znaleźć na stronie Microsoftu: https://support.microsoft.com/en-us/help/969028/how-to-generate-a-kernel-or-a-complete-memory-dump-file-in-windows-server-2008-and-windows-server-2008-r2.

Przydatny wpis? Postaw mi kawę :)

0 0 votes
Article Rating
Subscribe
Powiadom o
guest
2 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments
trackback
5 lat temu

Jak wykonać dump pamięci aplikacji – Skrawek Sieci

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl

Adam Furmanek
Adam Furmanek
5 lat temu

Odradzam task managera i process explorera, wielokrotnie ubiły mi proces przed zrobieniem zrzutu. Póki co tylko windbg mnie nie zawiódł.