2010-02-01 12 views
9

Mam kilka pytań dotyczących zrzutów rdzenia. Mam gdb na Windowsie, używając Cygwin.Analiza zrzutów rdzenia za pomocą gdb

  1. Jaka jest lokalizacja pliku głównego zrzutu? Czy jest to plik a.exe.stackdump? (Jest to jedyny plik wygenerowany po awarii) Czytałem na innych forach, że główny plik zrzutu nazywa się "core". Ale nie widzę żadnego pliku o nazwie "core".

  2. Co to jest polecenie otwierania i zrozumienia pliku zrzutu pamięci?

Odpowiedz

12
  1. Musisz skonfigurować Cygwin do produkcji rdzenia wysypisk poprzez włączenie

    error_start=x:\path\to\dumper.exe

    w zmiennej środowiskowej CYGWIN (patrz here w dziale "wywrotka", aby uzyskać więcej informacji). Jeśli tego nie zrobisz, otrzymasz tylko stacktrace - co może również pomóc w zdiagnozowaniu problemu.

  2. Uruchom gdb w następujący sposób, aby dołączyć go do pliku zrzutu:

    gdb myexecutable --core=mycorefile

    Teraz można użyć poleceń zwykle gdb wydrukować StackTrace zbadać wartości zmiennych, i tak dalej.

+0

Jak zmodyfikować zmienną środowiskową cygwin? – avd

+0

patrz http://en.wikipedia.org/wiki/Environment_variable. Jeśli używasz Cygwin, zdecydowanie polecam zapoznanie się z podstawami Uniksa - będziesz ich potrzebować. –

+0

Właściwie znam pojęcie zmiennej środowiskowej. Zrozumiałem, co mówisz, ustawiając zmienną środowiskową o nazwie "error_start". Pytam, gdzie powinienem zdefiniować nową zmienną środowiskową? w tym samym miejscu (mój komputer-> właściwości -> ...)? – avd

2
  1. Tak, Cygwin tworzy a.exe.stackdump plików domyślnie. Musisz go skonfigurować, aby utworzyć także core s (odpowiedź Martina obejmuje to).
  2. Prosty tutorial zrzutu debugowania można znaleźć here
Powiązane problemy