2010-05-04 19 views
7

Ostatnio zauważyłem wzrost wielkości zrzutów rdzenia generowanych przez moją aplikację. Początkowo miały one rozmiar około 5 MB i zawierały około 5 ramek stosu, a teraz mam zrzuty rdzenia> 2 GB, a informacje w nich zawarte nie różnią się od mniejszych zrzutów.Zrzuty jądra Linuksa są zbyt duże!

Czy istnieje sposób kontrolowania rozmiaru generowanych zrzutów pamięci? Czy nie powinny one być co najmniej mniejsze niż same pliki binarne aplikacji?

Binaries są opracowywane w ten sposób:

  • Zestawione w trybie uwolnienia z symbolami debugowania (czyli -g opcja kompilatora GCC w ).
  • Symbole debugowania są kopiowane na osobny plik
    i usuwane z pliku binarnego
    .
  • Link do symboli debugowania GNU zostaje dodany do pliku binarnego .

Na początku stosowania, jest to wezwanie do setrlimit który wyznacza granicę rdzenia do nieskończoności - Czy to problem?

+1

Przerwij podawanie burritos aplikacji. – Pierreten

Odpowiedz

1

Tak, setrlimit jest powodem, dla którego uzyskujesz duże pliki podstawowe. Możesz ustawić limit rozmiaru rdzenia w większości powłok, np. w bash możesz zrobić ulimit -c 5000000. Twoje połączenie setrlimit zastąpi to jednak.

/etc/security/limits.conf może być również użyty do ustawienia górnego ograniczenia rozmiaru rdzenia.

+2

Myślę, że ta odpowiedź jest myląca, setrlimit po prostu upewni się, że zrzut rdzenia nie jest większy niż określony przez skrócenie go. Zrzut główny jest wielkością wynikającą z pamięci przydzielonej lub odwzorowanej przez aplikację. – Peter

11

Tak - nie przeznaczyć tyle pamięci :-)

Rdzeń zrzutu zawiera pełny obraz przestrzeni adresowej danej aplikacji, w tym kodzie, stosu i sterty (malloc'd obiektów itd.)

Jeśli twoje zrzuty pamięci są> 2 GB, oznacza to, że w pewnym momencie przydzieliłeś tyle pamięci.

Możesz użyć setrlimit do ustawienia dolnego limitu rozmiaru zrzutu pamięci, co może skończyć się zrzutem pamięci, którego nie możesz dekodować (ponieważ jest niekompletny).

+2

Jeśli aplikacja zawiesza się, gdy ma duży plik zmapowany za pomocą 'mmap', to dostaniesz również ten plik do zrzutu. – caf

Powiązane problemy