Najczęstszym powodem zrzutu pamięci jest uzyskanie dostępu do adresu pamięci poza Twoim zasięgiem (pamięć, która nie należy do twojego programu). System operacyjny przerywa działanie programu z przerwą o nazwie SegFault lub BusError, odrzucając sposób, w jaki program próbował uzyskać dostęp do nieprawidłowego adresu pamięci. Program zostanie następnie zdecydowanie zamknięty przez jądro. Jeśli jądro zostało skonfigurowane do tworzenia zrzutu pamięci (zrzut pamięci i stos programu), zostanie on zapisany na dysku. Jak wspomniano w drugiej odpowiedzi, możesz załadować zrzut rdzenia do GDB lub innego debuggera i wyświetlić, co program robił w momencie awarii. To może, ale nie musi, dać ci problem. Zwykle ciężko jest nawet doświadczonemu programiście używać tych narzędzi, więc bądź świadomy. Jeśli chcesz spróbować użyć GDB, spróbuj tego:
$ gdb/ścieżka/do/awarii/Program/binary/ścieżka/do/rdzeń
(gdb) bt
'bt' będzie wyświetla "ślady" śledzenia, znane również jako StackTraces, i może być przydatne dla programisty w celu wyśledzenia błędu.
Jeśli jesteś w stanie odtworzyć błąd, prawdopodobnie masz szczęście, przesyłając szczegółowe zgłoszenie błędu do twórcy danego programu. Nawet ja, jako starszy programista, od czasu do czasu podróżuję tą trasą. :-)
Może uda Ci się zlokalizować plik core. –
Czy wiesz, jak to zrobić? – Arnaud
Zależy od systemu. Może być 'find/-name" core "-ls" działa. –