Как создать трассировку стека при ошибках


20

Я сисадмин, пытающийся отладить сайт Drupal. В журналах моего сервера я вижу, как Drupal снова и снова делает одни и те же запросы нашему экземпляру Solr, пока PHP не исчерпает память, и Apache не выдаст ошибку 500.

Как я могу настроить Drupal для записи трассировки стека где-нибудь на диске?

Ответы:


15

Вы можете использовать Devel модуль, и выберите один из вариантов «Krumo трассировку» , которые она предоставляет в своей странице конфигурации в админ / конфигурации / разработки / Devel.

Krumo Backtrace

Обязательно зайдите в admin / config / development / logging и выберите «Ошибки и предупреждения» или «Все сообщения». Если у вас есть модуль Syslog или любой другой модуль регистрации, вам может потребоваться отключить его и включить модуль Dblog.

Конфигурация обратной трассировки


6
Я нахожу, что этот метод не в состоянии дать трассировку krumo для определенных исключений, например, для доступа к несуществующему свойству EntityMetadataWrapperобъекта.
artfulrobot

3
Для ошибок EntityMetadataWrapper перейдите к строке в сообщенной ошибке и вставьте ddebug_backtrace();непосредственно перед этой строкой. Не забудьте удалить это конечно!
Дунканмоо

Записаны ли эти сообщения где-нибудь или есть возможность заставить их войти в журнал? Это бесполезно на производстве в противном случае.
Хюлле

1

в вашей системе drupal в разделе модулей под основными модулями находится модуль syslog для хранения журнала на диске. надеюсь, это поможет то, что вы ищете.


1
К сожалению, это не работает при фатальных ошибках (таких как ошибки нехватки памяти).
stefgosselin

0

Для Drupal 7 и 8 модуль проверки отлично подходит для отслеживания.

Он может добавлять их в файлы или журнал в базе данных Drupal, а не показывать их, что полезно в тех случаях, когда обратная трассировка Krumo ddebug_backtrace()и другие решения, которые создают прямой вывод на экран, дают сбой. Это касается ошибок и исключений, возникающих до начала рендеринга.

Область конфигурации административного бэкэнда для проверки содержит хороший краткий справочник по его использованию в коде.


2
Я копался в inspectдокументах, но не видел способа использовать его для генерации трассировки стека при ошибке. Это то, что он может сделать?
Кен Уильямс

0

Модуль Trace работал намного лучше для моей ситуации.

Это инструмент sysadmin & developer, который добавляет широкие возможности трассировки для вызовов ловушек Drupal, запросов к базе данных и ошибок PHP.

Некоторые функции, предоставляемые версией 1.0 этого модуля:

  • Выводит сообщения трассировки в файл или системный журнал (на платформах Unix).
  • Отслеживает вызовы хуков Drupal с помощью дополнительного фильтра и трассировки стека.
  • Отслеживает PHP-предупреждения и ошибки с помощью дополнительной трассировки полного стека.
  • Отслеживает запросы к базе данных SQL с дополнительной фильтрацией по типу запроса.
  • Вывод трассировки включает информацию о времени микросекундного уровня.
  • Трассировки стека включают переданные аргументы функции в синтаксисе PHP.
  • Необязательный вывод отладки включает суперглобальные переменные PHP и заголовки HTTP.
  • Определяет ловушку, позволяющую другим модулям расширять цели вывода трассировки.

1
Теперь этот модуль больше не находится в разработке и, по-видимому, версия D7 недоступна… :(
tanius
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.