Mam program C ++, który robi to, co powinien, ale musi być jakiś problem ze wskaźnikiem, ponieważ zawiesza się na końcu i tworzy zrzut pamięci. Mój problem polega na tym, że nie mogę znaleźć pliku podstawowego, więc nie mogę go debugować.
próbowałem
ulimit -c unlimited
ulimit -a
a teraz wymiar pliku jest ustawiony na nieograniczony, ale nadal nie mogę znaleźć rdzenia. Próbowałem w każdym folderze tutaj napisanym , ale nadal wydaje się, że nie jest tworzony żaden plik podstawowy.
Gdzie mogę to znaleźć?
/var/crash
/var/log/apport.log
, ponieważ nowoczesne wersje Ubuntu używają Apport, który może w nieoczywisty sposób zakłócać zrzutowanie rdzenia. Aby uzyskać więcej informacji, zobacz stackoverflow.com/a/18368068/1772379Odpowiedzi:
W Ubuntu zrzuty rdzenia są obsługiwane przez Apport i mogą być zlokalizowane w
/var/crash/
. Ale jest domyślnie wyłączone w stabilnych wersjach.Aby włączyć Apport, uruchom:
sudo systemctl enable apport.service
lubsudo service apport start
.Aby wyłączyć, uruchom:
sudo systemctl disable apport.service
lubsudo service apport stop
w celu powrotu do zwykłej podstawowej metody zrzutu. Zobacz: Jak włączyć lub wyłączyć Apport? .Aby trwale wyłączyć, edytuj
/etc/apport/crashdb.conf
plik i skomentuj następujący wiersz:dodając symbol skrótu (
#
) na początku wiersza.Aby wyłączyć raportowanie awarii (powrót do normy), usuń symbol skrótu (taki sam, jak był).
Możesz także sprawdzić
core_pattern
, jak jądro obsługuje zrzuty pamięci:Więc nawet podstawowe pliki są wyłączone przez
ulimit
,apport
nadal przechwytują awarię.Zobacz też:
źródło
Dla tych googlinów: (w moim przypadku - Ubuntu 16.04 i 18.04 i aplikacja niestandardowa)
/var/crash
była nadal pusta, więc szybki sposób obsługiwał tworzenie rdzenia (pod warunkiem, że np. Używasz odpowiedniego ustawienia wbudowanego ulimit ) byłi
Źródła:
źródło