Jak wygenerować ślad stosu po błędach

20

Jestem sysadminem próbującym debugować witrynę Drupal. W moich logach serwera widzę, jak Drupal ciągle i ciągle wysyła te same żądania do naszej instancji Solr, aż PHP w końcu skończy się pamięć, a Apache zwróci błąd 500.

Jak skonfigurować Drupal, aby zapisywał ślad stosu gdzieś na dysku?

Max
źródło

Odpowiedzi:

15

Możesz użyć modułu Devel i wybrać jedną z dostępnych opcji „Krumo Backtrace” na stronie konfiguracji admin / config / development / devel.

Krumo Backtrace

Odwiedź stronę admin / config / development / loging i wybierz „Błędy i ostrzeżenia” lub „Wszystkie wiadomości”. Jeśli masz włączony moduł Syslog lub inny moduł rejestrujący, może być konieczne jego wyłączenie i włączenie modułu Dblog.

konfiguracja śledzenia wstecznego

amator barista
źródło
6
Uważam, że ta metoda nie daje śladu krumo dla pewnych wyjątków, np. Dostępu do nieistniejącej właściwości EntityMetadataWrapperobiektu.
artfulrobot
3
W przypadku błędów EntityMetadataWrapper przejdź do wiersza zgłaszanego błędu i wstaw ddebug_backtrace();bezpośrednio przed tym wierszem. Oczywiście nie zapomnij tego usunąć!
Duncanmoo,
Czy te wiadomości są gdzieś zarejestrowane, czy można je zapisać w dzienniku? W przeciwnym razie jest to trochę bezużyteczne w produkcji.
Hjulle
1

w twoim systemie drupal w sekcji modułów pod modułami podstawowymi jest moduł syslog do przechowywania logów na dysku. mam nadzieję, że pomoże to, czego szukasz.

samir mankar
źródło
1
Niestety nie działa to w przypadku błędów krytycznych (takich jak błędy braku pamięci).
stefgosselin
0

W przypadku Drupal 7 i 8 moduł inspekcji doskonale nadaje się do śledzenia śladów.

Może dodawać je do plików lub dziennika w bazie danych Drupal zamiast je wyświetlać, co jest przydatne w przypadkach, gdy śledzenie Krumo ddebug_backtrace()i inne rozwiązania, które tworzą bezpośrednie wyjście ekranowe, zawodzą. Tak jest w przypadku błędów i wyjątków występujących przed uruchomieniem renderowania.

Obszar konfiguracji zaplecza administratora dla inspekcji zawiera ładne szybkie odniesienie do jego użycia w kodzie.

Tanius
źródło
2
Przeszukałem inspectdokumentację, ale nie widziałem sposobu, aby użyć go do wygenerowania śladu stosu po błędzie. Czy to coś, co może zrobić?
Ken Williams
0

Nazwiska moduł pracował o wiele lepiej dla mojej sytuacji.

To narzędzie sysadmin i programista, które dodaje rozbudowane funkcje śledzenia dla wywołań haków Drupal, zapytań do baz danych i błędów PHP.

Niektóre funkcje udostępnione przez wersję 1.0 tego modułu:

  • Wysyła komunikaty śledzenia do pliku lub syslog (na platformach Unix).
  • Śledzi wywołania haka Drupal z opcjonalnym filtrem i stosem śledzenia.
  • Śledzi ostrzeżenia i błędy PHP za pomocą opcjonalnego śledzenia pełnego stosu.
  • Śledzi zapytania do bazy danych SQL z opcjonalnym filtrowaniem według typu zapytania.
  • Dane wyjściowe śledzenia zawierają informacje o taktowaniu na poziomie mikrosekund.
  • Dane śledzenia stosu zawierają przekazane argumenty funkcji w składni PHP.
  • Opcjonalne dane wyjściowe debugowania obejmują superglobale PHP i nagłówki HTTP.
  • Definiuje hak umożliwiający innym modułom rozszerzenie celów wyjściowych śledzenia.
deweydb
źródło
1
Teraz ten moduł nie jest już opracowywany i najwyraźniej nie jest dostępna wersja D7… :(
tanius