Jak uzyskać zrzut rdzenia Apache?

8

Mam problemy z moim Ubuntu Server 14.10. Po wykonaniu pewnych czynności mój apache2 uruchamia się ponownie z błędem błędu segmentacji. W celu debugowania tego problemu chciałbym utworzyć zrzut podstawowy. Zrobiłem następujące:

  • dodano CoreDumpDirectory /tmp/apache-coredumpsdo pliku konfiguracyjnego
  • Biegać ulimit -c unlimited
  • Biegać apt-get install apache2-dbg php5-dbg
  • zrestartował się apachei spowodował błąd. Dziennik twierdzi, że w katalogu może znajdować się zrzut pamięci, jednak jest on pusty.

Próbowałem także użyć gdb bezpośrednio w pliku wykonywalnym apache2, ale apache nie uruchomi się, dopóki nie zostanie uruchomiony przez apachectllub service apache2 start.

Jak mogę uzyskać zrzut podstawowy do debugowania mojego problemu LUB JAK mogę dołączyć gdbbezpośrednio do apache?

Andreas Hartmann
źródło
Pierwsze z nich znajduje się tutaj: serverfault.com/questions/470407 / ... drugie, tutaj: httpd.apache.org/dev/debugging.html#gdb
Elder Geek
Niestety to nie zadziałało. Próbowałem ustawić uprawnienia zgodnie z sugestią podaną w pierwszym łączu, ale nadal nie ma zrzutu rdzenia. Znałem już drugi link. Naprawdę nie odpowiada na moje pytanie w sposób specyficzny dla Ubuntu (Ubuntu nie ma pliku wykonywalnego httpd, a bezpośrednie wywoływanie apache2 nie działa z wcześniej wymienionych powodów).
Andreas Hartmann
Czy zamiast tego może być rdzeń w / tmp?
Starszy Geek
Podałem zrzut rdzenia, który ma być umieszczony w innym folderze, więc nie ma go w katalogu / tmp.
Andreas Hartmann
Nie chcę używać apport, chcę zbadać mój problem lokalnie i nie zgłaszać błędu, ponieważ prawdopodobnie nie jest to błąd apache.
Andreas Hartmann

Odpowiedzi:

4

ulimit -c unlimited wpływa tylko na twoją bieżącą powłokę.

Możesz to potwierdzić, patrząc na dane wyjściowe cat /proc/$(pidof -s apache2).

Dodałem ulimit -c unlimiteddo /etc/default/apache2i teraz cat /proc/$(pidof -s apache2)/limitsobejmuje

Max core file size        unlimited            unlimited            bytes
Jay _silly_evarlast_ Wren
źródło
Próbowałem tego, ale wciąż nie udało się Apache (12 LTS) zrzucić rdzenia. jakieś pomysły?
Josip Rodin
Znalazłem odpowiedź - apport został włączony /etc/default/apporti zmienił wzór zrzutu rdzenia jądra, aby pasował do siebie. Zobacz serverfault.com/questions/470407/…
Josip Rodin
echo '/tmp/apache-coredumps/core-%e.%p'> / proc / sys / kernel / core_pattern
Rudger