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
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.
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
.
- 1. Wyjątek zmiennoprzecinkowy (zrzut rdzenia
- 2. Minimalny zrzut rdzenia (śledzenie stosu + aktualna ramka)
- 3. Zrzut ekranu z animacją rdzenia na iPadzie
- 4. Jak zrzucić aplikację .NET Core w systemie Linux
- 5. Jak skompilować bibliotekę statyczną w systemie Linux?
- 6. Jak złapać błąd segmentacji w systemie Linux?
- 7. Jak wywołać "cpuid" w systemie Linux?
- 8. Jak zatrzymać proces "nieprzerywanego" w systemie Linux?
- 9. Jak uruchomić plik binarny w systemie Linux
- 10. Jak zmienić hasło w systemie Linux?
- 11. Jak zainstalować węzeł-gyp w systemie Linux?
- 12. Jak rejestrować zużycie pamięci w systemie Linux?
- 13. Jak używać głośnika PC w systemie Linux?
- 14. Jak skompilować kod objc w systemie Linux?
- 15. Jak przekonwertować zrzut sterty w systemie Android do formatu Zaćmienie
- 16. Profilowanie wydajności w systemie Linux
- 17. mudflap zgłasza zrzut rdzenia podczas używania operatora new() do przydzielania pamięci
- 18. Interlocked odpowiednik w systemie Linux
- 19. Błędy Tomcat w systemie Linux
- 20. Programowanie kamery w systemie Linux
- 21. Dystrybucja oprogramowania w systemie Linux?
- 22. Java BlockingQueue opóźnienie wysokie w systemie Linux
- 23. Zrzuty widełek i rdzenia z wątkami
- 24. Przenoszenie plików w systemie Linux w C
- 25. HeapCreate, HeapAlloc w systemie Linux, prywatny przydział dla systemu Linux
- 26. Tworzenie wirtualnego interfejsu sieciowego w systemie Linux?
- 27. Wyświetlanie zrzutów rdzenia
- 28. Rozwój ARM na systemie Linux
- 29. Uzyskaj adres IP interfejsu w systemie Linux
- 30. Usługa WCF w systemie Linux z Apache2
Dzięki. Dokładnie to, czego szukałem. –