Як генерувати слід стека при помилках


20

Я sysadmin намагаюся налагодити сайт Drupal. У моїх журналах сервера я бачу, як Drupal знову і знову робить ті самі запити до нашого екземпляра Solr, поки в PHP зрештою не закінчиться пам'ять, і Apache поверне помилку 500.

Як я можу налаштувати Drupal на запис сліду стека десь на диску?

Відповіді:


15

Ви можете використовувати модуль Devel та вибрати один із параметрів "Krumo Backtrace", який він надає на своїй сторінці конфігурації в адміністраторі / конфігурації / розробці / devel.

Крумовий заднім числом

Обов’язково відвідайте адміністратор / config / development / logging та виберіть "Помилки та попередження" або "Усі повідомлення". Якщо у вас включений модуль Syslog або будь-який інший модуль реєстрації, вам може знадобитися відключити його та включити модуль Dblog.

backtrace config


6
Я вважаю, що цей метод не дає назвою krumo за певними винятками, наприклад, доступ до неіснуючого властивості EntityMetadataWrapperоб’єкта.
artfulrobot

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

Чи є ці повідомлення десь увійшли в журнал чи можливо змусити їх перейти до журналу? Це інакше марно на виробництві.
Hjulle

1

у вашій друпальській системі в розділі модулів під основними модулями - це модуль syslog для зберігання журналу на диску. сподіваюся, що це допоможе тому, що шукаєте.


1
На жаль, це не працює при фатальних помилках (наприклад, помилках в пам'яті).
stefgosselin

0

Для Drupal 7 і 8 перевірка модуля чудово підходить для зворотного зв'язку.

Він може додавати їх до файлів або журналу в базі даних Drupal, а не показувати їх, що корисно в тих випадках, коли Krumo зворотний шлях ddebug_backtrace()та інші рішення, що створюють прямий екранний вихід, виходять з ладу. Це стосується помилок та винятків, що трапляються перед початком надання виводу.

Область конфігурації адміністратора сервера для перевірки містить хорошу швидку довідку щодо її використання в коді.


2
Я ткнув навколо в inspectдокументах, але не бачив способу використовувати його для створення сліду стека при помилці. Це щось може зробити?
Кен Вільямс

0

Модуль Trace працював набагато краще для моєї ситуації.

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

Деякі функції, надані версією 1.0 цього модуля:

  • Виводить повідомлення відстеження до файлу або syslog (на платформах Unix).
  • Простежує виклики гака Drupal з додатковим фільтром і слідом стека.
  • Простежує попередження та помилки PHP за допомогою необов'язкового повного сліду стека.
  • Простежує запити до бази даних SQL з додатковою фільтрацією за типом запиту.
  • Виведення трасування включає інформацію про хронометричний рівень на мікросекунді.
  • Сліди стеків включають передані аргументи функції в синтаксисі PHP.
  • Додатковий вихід налагодження включає суперглобали PHP та заголовки HTTP.
  • Визначає гак, що дозволяє іншим модулям розширювати цілі виведення сліду.

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