Korzystam z CentOS 6, próbując włączyć zrzuty pamięci dla opracowywanej przeze mnie aplikacji. Położyłem:
ulimit -H -c unlimited >/dev/null
ulimit -S -c unlimited >/dev/null
w moim profilu bash, ale zrzut pamięci nadal nie został wygenerowany (w nowym terminalu).
Zmieniłem również mój plik /etc/security/limits.conf, tak aby miękkie limity wynosiły zero dla wszystkich użytkowników.
Jak ustawić lokalizację wyjściowych plików podstawowych? Chciałem określić lokalizację i dołączyć czas generowania zrzutu jako część nazwy pliku?
Odpowiedzi:
Aby ustawić lokalizację zrzutów pamięci w CentOS 6, możesz edytować
/etc/sysctl.conf
. Na przykład, jeśli chcesz zrzutów pamięci w/var/crash
:Gdzie zmienne są:
Musisz także dodać
/etc/sysconfig/init
Teraz zastosuj nowe zmiany:
Ale jest w tym zastrzeżenie. Jeśli parametr jądra kernel.core_pattern jest zawsze resetowany i zastępowany przy ponownym uruchomieniu do następującej konfiguracji, nawet jeśli wartość jest ręcznie określona w
/etc/sysctl.conf
:W skrócie, kiedy
abrtd.service
startkernel.core_pattern
jest automatycznie nadpisywany przez zainstalowany systemabrt-addon-ccpp
. Istnieją dwa sposoby rozwiązania tego:Ustawienie
DumpLocation
opcji w/etc/abrt/abrt.conf
pliku konfiguracyjnym. Katalog docelowy można określić, ustawiając DumpLocation =/var/crash
w/etc/abrt/abrt.conf
pliku konfiguracyjnym, asysctl kernel.core_pattern
wyświetlana wartość jest taka sama, ale tak naprawdę plik podstawowy zostanie utworzony w katalogu pod/var/crash
.Również jeśli masz włączony SELinux, musisz uruchomić:
I w końcu uruchom ponownie
abrtd.service
:Zatrzymaj usługę abrtd.
kernel.core_pattern
nie zostanie nadpisany. - (Nigdy nie testowałem).źródło
Aby wygenerować zrzut rdzenia na Busybox, możemy dodać poniższe parametry w skrypcie inicjującym, który uruchamia nasz plik wykonywalny. Tak więc za każdym razem, gdy inicjalizujemy oprogramowanie i eksportujemy zmienne środowiskowe, możemy również skopiować poniższe wiersze do skryptu, aby zrzucić rdzeń na wypadek awarii.
Aby ustawić lokalizację zrzutów rdzenia w Busybox, możesz ustawić ścieżkę pliku rdzenia za pomocą systemu plików proc. Na przykład, jeśli chcesz zrzutów rdzenia w
/tmp/crash/corefiles
:Gdzie zmienne są:
Ponadto musisz ustawić rozmiar pliku podstawowego, poniższe polecenie ustawia rozmiar pliku podstawowego na nieograniczony
Teraz, aby sprawdzić podstawowy rozmiar pliku ustawiony dla każdego wątku w procesie, który możemy sprawdzić za pomocą
Dane wyjściowe powyższego polecenia:
Jak widać z powyższego wyjścia maksymalny rozmiar pliku rdzenia jest ustawiony na nieograniczony.
Aby uzyskać więcej informacji, odwiedź ten link. Techniki debugowania aplikacji Linux / pliki podstawowe
źródło