Jak mogę odczytać plik awarii z / var / crash


20

php-fpm rozbił się na nas i zrzucił plik

/var/crash/_usr_sbin_php5-fpm.1002.crash

W tym pliku jest kilka informacji, ale szukam w sekcji o nazwie CoreDump w formacie zakodowanym w standardzie base64. Jak mogę przeczytać, co działało w czasie awarii?

Odpowiedzi:


18

W przypadku, gdy nie chcesz instalować wiązki zależności dla apport-retracenarzędzia, możesz rozpakować format apport do osobnych plików i używać tylko CoreDumpzrzutu gdbjak zwykle.

  1. apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
  2. cd yourNewUnpackDirectoryHere/
  3. gdb `cat ExecutablePath` CoreDump (zwróć uwagę na tyldy tutaj!)
  4. bt (wyjściowy faktyczny ślad zwrotny)

    Uwaga: apport-unpackczasami zawiesza się podczas operacji rozpakowywania (apport wydaje się być uszkodzony dookoła ... xD), ale twój CoreDump i inne pliki będą tam, po prostu zignoruj ​​je i usuń wszystkie pliki .crash /var/crashpo przeniesieniu ich w inne miejsce, aby umożliwić system do generowania nowych raportów o awariach z tych samych aplikacji.


1
Działa jak urok, bez konieczności instalowania apport-retrace , dzięki!
greuze

1
@digital_infinity nie ?! Przekonaj się sam. Jest duża różnica między echem a kotem ...
stamster

2
@stamster Masz rację. Przepraszamy, brakowało mi pliku o nazwie ExecutablePath. Myślałem, że czytelnik musi tam wypełnić ścieżkę wykonywalną.
digital_infinity

15

Istnieje narzędzie o nazwie, apport-retracektóre odczytuje pliki .crash i pozwala albo wypełnić go w pełni symbolicznym śladem stosu, albo uruchomić gdbsesję przy użyciu zrzutu pamięci. Aby rozpocząć sesję gdb, uruchom apport-retrace -g CRASHFILE.crash. Pamiętaj, że musisz mieć zainstalowane pakiety -dbg, aby uzyskać dobre dane śledzenia stosu.

Biorąc to pod uwagę (nie jestem ekspertem od PHP), może to być coś, co napisałeś w jednym z plików, który powoduje awarię.


4
Nie t seem to work: # apport -retrace -g _usr_sbin_php5-fpm.1002.crash BŁĄD: plik raportu nie zawiera jednego z wymaganych pól: CoreDump DistroRelease Package ExecutablePath` # grep CoreDump _usr_sbin_php5-fpm.1002.crash CoreDump: base64
user76369

10
Edytuj plik awarii i dodaj pole „Pakiet: 0” w obszarze ExecutableTimestamp.
DarkNeuron,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.