Czy w przypadku awarii aplikacji bez wyjścia pojawia się błąd, który mogę sprawdzić?

18

Czasami zdarza się, że jakaś aplikacja ulega awarii bez błędu wyjściowego ( w moim przypadku Conky , prawdopodobnie jest to jedna z moich konfiguracji, która jest niepoprawna).

Czy jest gdzieś dziennik błędów, który mogę sprawdzić, aby zrozumieć, dlaczego się zawiesił?

Strae
źródło

Odpowiedzi:

14

Zależy od aplikacji. Różne aplikacje mają różne systemy rejestrowania; nie ma jednego centralnego dziennika, który zawierałby wszystkie dane wyjściowe ze wszystkich programów uruchomionych w systemie.

Mimo to wiele programów umieszcza swoje pliki dziennika w katalogu /var/log. Plik /var/log/syslog(a może /var/log/messages) zawiera w szczególności dane wyjściowe z „loggera systemowego”, który jest usługą udostępnianą przez system, z której programy mogą korzystać (jeśli chcą) do logowania. Ale nie wszystkie programy go używają. Najczęściej w tym pliku znajdują się wiadomości z usług systemowych niskiego poziomu, a nie aplikacje graficzne, których prawdopodobnie używasz normalnie.

Możesz przeczytać więcej na temat lokalizacji standardowych plików dziennika .

David Z
źródło
6

pliki awarii wchodzą do /var/log/crashes/użytku z apport do zgłaszania błędów. Możesz wyodrębnić zrzut apport-unpackrdzenia, przerzucić go przez gdb i dowiedzieć się, co powoduje awarię programu.

To wszystko zakładając, że jesteś programistą. Jeśli nie jesteś ... cóż, i tak nie możesz naprawić awarii!

maco
źródło
1
„To wszystko przy założeniu, że jesteś programistą. Jeśli nie jesteś ... cóż, i tak nie możesz naprawić awarii!” z open source wszyscy możemy spróbować rozwiązać nasze problemy, oczywiście na własne ryzyko;)
Strae
@DaNiel: Nie bardzo! Jeśli nie jesteś programistą i nie rozumiesz dobrze kodu aplikacji, tym bardziej będziesz bałagać się kodem, z którym buggier prawdopodobnie się dostanie :)
AntonioCS
1
Nawet jeśli nie jesteś programistą, czasami szukanie zrzutu pamięci może dać ci pojęcie o problemie. Na przykład wydaje się, że zawiesza się w jakiejś procedurze graficznej - może powinienem zaktualizować sterownik ekranu ...
user1242,
2
..i pomaga opisywać błędy w raportach błędów / forach;)
Strae
1
Czy znasz nie-programistów, którzy mogą korzystać z gdb? Jestem programistą i mogę dojść do tego, że bt full„o, spójrz wstecz… z brakującymi symbolami… zgadnij, że muszę zainstalować symbole debugowania i spróbować odtworzyć awarię…” Kiedyś wymyśliłem, jak ustawić punkt przerwania ... to najbardziej zaawansowany, jaki udało mi się z tym zrobić.
maco
3

Dla Conky może być również, że są wpisy $HOME/.xsession-errors.

qbi
źródło
2

Niektóre aplikacje mają flagi, których można użyć do włączenia debugowania, takie jak -d, -D, --debug itp. Sprawdź stronę podręcznika aplikacji ( man [my-app]) lub uruchom aplikację z flagą -h, aby sprawdzić, czy ma taką opcję opcja.

Wiele aplikacji GUI zapisuje w $ HOME / .xsession-error, więc jest to dobre miejsce do sprawdzenia wyników.

Maco ma rację, że apport jest prawdopodobnie najbardziej pewnym sposobem na uzyskanie dobrych informacji debugowania. Czasami jednak nie rejestruje awarii.

Jeśli wszystko inne zawiedzie, możesz również wymusić z niego informacje, uruchamiając aplikację w gdb. To byłoby coś w stylu:

$ gdb my-app

(gdb) run

... rób wszystko, co konieczne, aby się zawiesić ...

(gdb) bt full

i stamtąd

Jeśli pójdziesz trasą gdb, będziesz również chciał zainstalować symbole, jak wspomniano wcześniej. Zobacz https://wiki.ubuntu.com/DebuggingProgramCrash, aby uzyskać porady dotyczące trzymania.

Bryce
źródło
Najlepsza odpowiedź dla mnie bez wątpienia
Claudix
1

możesz przejść do /var/log/messages or crashestego, a następnie możesz uruchomić na nich greppolecenie i wyszukać aplikację, której czasem szukasz plików. Zwróci informacje istotne dla Twojej aplikacji. :)

myusuf3
źródło
1

Jeśli uruchamiasz aplikację z pliku uruchamiającego .desktop, dodaj opcję Terminal=truedo pliku .desktop. Otworzy to terminal po uruchomieniu programu, dane wyjściowe na terminalu będą podobne do tego, co zobaczyłbyś, gdybyś uruchomił program za pomocą wiersza poleceń. W ten sposób, gdy GUI ulega awarii lub zawiesza się, możesz zobaczyć, do czego doprowadził tekst.

Selah
źródło
Co to robi? Mam już ten zestaw i nie rejestruję niczego dodatkowego.
Matt
Próbowałem odpowiedzieć na twoje pytanie, edytując odpowiedź. Czy to ma sens?
Selah,