Jeśli spojrzysz na stronę Core Man, określa ją jako zrzut podstawowy jako „plik zawierający obraz pamięci procesu w momencie zakończenia. Ten obraz może być używany w debuggerze (e.G.) GDB w celu sprawdzenia stanu programu w momencie jego zakończenia ”.
Mówiąc prosto, plik zrzutu podstawowego to plik zawierający informacje o pamięci o procesie, gdy określony proces kończy się.
Istnieją różne powody, dla których procesy mogą zawieść i utworzyć plik zrzutu podstawowego. Ten samouczek pokaże, jak korzystać z GDB do wyświetlania pliku zrzutu podstawowego i wydrukowania śladu stosu.
Krok 1: Zdobądź zrzut rdzenia
Zanim zaczniemy analizować plik zrzutu podstawowego, musimy go wygenerować. Aby to zrobić, możemy użyć programu Buggy.
Rozważ kod buggy.C poniżej:
#włączaćW powyższym kodzie tworzymy pętlę dla od 0 do 10. Jeśli wartość i wynosi 5, odwołujemy się do złego wskaźnika, powodując w ten sposób segfault i tworząc zrzut rdzenia.
Clang -g Bugg.C -O BuggyTeraz uruchom kod jako:
./powozikPowyższy kod poda wyjście jako:
I mam 0Krok 2: Otwórz zrzut rdzenia z GDB
Aby otworzyć plik zrzutu podstawowego z GDB, użyj polecenia GDB i przejdź ścieżkę do zrzutu wykonywalnego i rdzenia jako parametry jako:
$ GDB Buggy CoreSpowoduje to uruchomienie GDB i zawiera zrzut rdzenia, jak pokazano na poniższym wyjściu:
Aby pokazać ślad stosu pliku podstawowego, użyj polecenia Backtrace:
(GDB)Wniosek
Ten samouczek pokazał, jak używać GDB do otwarcia plik zrzutu podstawowego i uzyskania śladu stosu.