2011-01-27 12 views
11

Szukam sposobu na wybranie sekcji i regionów pamięci zawartych w zrzucie rdzenia.
Rozmiar zrzutu pamięci głównej aplikacji wynosi około 30 GB, w większości jest to w buforach wstępnie przydzielonych, których nawet nie potrzebuję podczas debugowania (i można je później wyzerować). Jednakże, ponieważ zrzut jest tak duży, aplikacja może zakończyć się zbyt długo i rozpocząć odzyskiwanie.
Czy ktoś może wymyślić sposób, aby z góry wybrać segmenty, które będą w zrzucie rdzenia?
DziękiSelektywny zrzut rdzenia w systemie Linux - Jak wybrać sekcje porzucone?

Odpowiedz

16

Według core(5) podręcznika, który można ustawić mapowanie są zapisywane w pliku Rdzeń:

Ponieważ jądro 2.6.23 The specyficzne dla Linuksa plik /proc/PID/coredump_filter może być używane do kontrolowania, które segmenty pamięci są zapisywane w pliku zrzutu pamięci głównej w w przypadku wykonania zrzutu pamięci dla procesu z odpowiednim identyfikatorem procesu .

Wartość w pliku jest niewielką maską typów mapowania pamięci (zobacz mmap (2)). Jeśli bit jest ustawiony w masce, to odwzorowania pamięci odpowiadające typowi są porzucone; w przeciwnym razie są one niezamuskane. Bity w tym pliku mają następujące znaczenie:

 bit 0 Dump anonymous private mappings. 
     bit 1 Dump anonymous shared mappings. 
     bit 2 Dump file-backed private mappings. 
     bit 3 Dump file-backed shared mappings. 
     bit 4 (since Linux 2.6.24) 
       Dump ELF headers. 
     bit 5 (since Linux 2.6.28) 
       Dump private huge pages. 
     bit 6 (since Linux 2.6.28) 
       Dump shared huge pages. 

Domyślnie ustawione są następujące bity: 0, 1, 4 (jeśli CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS opcja konfiguracji jądra jest włączona), oraz 5. wartość tego pliku jest wyświetlana w systemie szesnastkowym. (Wartość domyślna jest zatem wyświetlana jako 33.) Strony I/O odwzorowane w pamięci, takie jak bufor ramki, nigdy nie są odrzucane, a strony wirtualne DSO są zawsze odrzucane, niezależnie od wartości coredump_filter .

...

Ten plik jest tylko wtedy, gdy jądro zostało zbudowane z opcji konfiguracyjnej CONFIG_ELF_CORE.

+0

Dzięki. Dokładnie to, czego szukałem. –

0

Nie jestem pewien, czy możliwe jest ustawienie części pamięci do zrzutu.

Od man 5 core

plik na dysku zawierającego obraz pamięci procesu w momencie zakończenia

Jako opcję można obciąć plik core korzystając setrlimit z parametrem RLIMIT_CORE.

Powiązane problemy