Jeśli aplikacja ulegnie awarii w systemie Windows, możemy sprawdzić Podgląd zdarzeń w narzędziach administracyjnych, aby zobaczyć, co się zawiesiło. Czasami zawiera przydatne informacje, których inni nie, ale to dopiero początek.
W Linuksie, jeśli aplikacja (jakakolwiek) ulega awarii, gdy zaczyna się śledzić, co się stało?
Czy istnieje np. Jakiś dziennik centralny lub coś podobnego?
12
/var/log/syslog
. Linux umożliwia demonowi powiadamianie o awariach procesów. Ubuntu apport i Red Hat ABRT wykorzystanie tego, aby zapewnić scentralizowane rejestrowanie i raport generacji urządzeń. Zasadniczo zrzut pamięci jest zapisywany, dzięki czemu można wywołać debugger w programie, który uległ awarii.Odpowiedzi:
Normalne miejsce na dzienniki systemowe to
/var/log/
. To, co jest umieszczane w każdym dzienniku, zależy od konfiguracji syslog, ale zwykle wszystko oprócz logowań przechodzi/var/log/syslog
.Nie gwarantuje to, że w przypadku problemów poszczególne aplikacje pozostawią jakąkolwiek wskazówkę. Ale oni lub powłoka prawdopodobnie wyplują coś ze standardowych strumieni wyjściowych / standardowych błędów, a jeśli uruchomisz kłopotliwą aplikację na pierwszym planie z terminala, będziesz mógł zobaczyć te rzeczy.
źródło
/var/log
? Który plik dziennika? Czy istnieje jakaś konwencja?ls -lart
ostatnim plikiem na liście został ostatnio zmieniony./var/log/syslog
, ale różne dystrybucje działają inaczej. Jeśli wiesz, jakiego syslog używasz, możesz sprawdzić jego konfigurację, aby to ustalić.Na Ubuntu segfault pisze się pod adresem
/var/log/kern.log
. Przetestowałem to, tworząc program, który segfaultuje:Po tym, jak doszło do awarii, pojawiła się następująca linia
/var/log/kern.log
:źródło
W Ubuntu, jeśli uruchamiasz aplikację z pliku uruchamiającego .desktop, dodaj opcję
Terminal=true
do pliku .desktop.źródło