Co to jest zrzut rdzenia?

Zrzut pamięci to zapis zawartości pamięci komputera, w którym wystąpił poważny błąd. Może obejmować całą pamięć systemową lub tylko część używaną przez program, który się nie powiódł. Może również zawierać inne istotne dane, takie jak stan procesora, zawartość rejestru i informacje o uruchomionych procesach. Inżynierowie oprogramowania często używają zrzutów pamięci z debugerami i innymi narzędziami do analizowania i naprawiania błędów komputera. Zrzut pamięci może być również użyty do przeniesienia działającego procesu z jednego procesora na drugi podczas normalnej pracy.

Termin „zrzut rdzenia” prawdopodobnie powstał w latach 1960. XX wieku, kiedy wczesne komputery wykorzystywały pamięć magnetyczną. Kiedy uruchomiony program ulegał awarii, wszystkie dane w całym rdzeniu były drukowane na papierze, aby pomóc w debugowaniu. Wydruki te zwykle zawierały niewiele więcej niż adresy pamięci i dane w notacji ósemkowej lub szesnastkowej. W miarę ulepszania technologii pamięci masowej zrzuty rdzenia można było zapisywać na dysku, na wymiennej taśmie magnetycznej lub na nieulotnych kartach pamięci. Większa pojemność przechowywania informacji o stanie wraz z postępami w debugowaniu oprogramowania sprawiły, że diagnostyka błędów jest bardziej wydajna.

Typowe przyczyny zrzutów pamięci to źle napisane aplikacje lub oprogramowanie systemowe. Dość często kod programu zakłada, że ​​wskaźniki i indeksy tablic zawsze odwołują się do prawidłowych struktur danych. Jeśli którykolwiek z nich przemieścił się na przykład poza granice swoich pierwotnych struktur, może wystąpić zrzut rdzenia. Problemy z dostępem do plików danych na urządzeniu pamięci masowej lub odczytywanie uszkodzonych danych również mogą spowodować zrzut pamięci. Problemy sprzętowe, w tym awaria pamięci, dysków twardych lub procesorów, również mogą je wywołać.

Zasadniczo istnieją dwa rodzaje zrzutów rdzenia. Jeden typ to przerwanie działającego procesu lub aplikacji i powrót sterowania do systemu operacyjnego. W takim przypadku reszta systemu nadal działa normalnie, ponieważ zatrzymany został tylko program naruszający prawo. Zwykle generowany jest duży plik zrzutu pamięci, który można następnie załadować do debugera. Jeśli błąd wystąpił w programie, dla którego dostępne są symbole i kod źródłowy, można je również załadować do debugera.

Inny, poważniejszy rodzaj zrzutu pamięci jest również nazywany paniką jądra. Ten rodzaj zrzutu zatrzymuje cały system, aby zapobiec dalszym komplikacjom i uszkodzeniom danych. W systemach Microsoft Windows® ten rodzaj zrzutu zwykle występuje w zbyt znajomej postaci „niebieskiego ekranu śmierci”. Takie paniki są zwykle trudniejsze do debugowania i często są spowodowane problemami sprzętowymi lub systemowymi. Może się to zdarzyć przed zakończeniem rozruchu systemu, gdy dostępnych jest niewiele informacji o rzeczywistej przyczynie.