Cómo generar un seguimiento de pila en caso de errores

20

Soy administrador de sistemas tratando de depurar un sitio de Drupal. En los registros de mi servidor, puedo ver a Drupal haciendo las mismas solicitudes una y otra vez a nuestra instancia de Solr hasta que PHP finalmente se quede sin memoria y Apache devuelva un error 500.

¿Cómo puedo configurar Drupal para registrar un seguimiento de pila en algún lugar del disco?

Max
fuente

Respuestas:

15

Puede usar el módulo Devel y seleccionar una de las opciones de "Krumo Backtrace" que proporciona en su página de configuración en admin / config / development / devel.

Krumo Backtrace

Asegúrese de visitar admin / config / development / logging y seleccione "Errores y advertencias" o "Todos los mensajes". Si tiene el módulo Syslog o cualquier otro módulo de registro habilitado, es posible que deba deshabilitarlo y habilitar el módulo Dblog.

configuración de seguimiento

barista aficionado
fuente
66
Encuentro que este método no puede proporcionar la traza inversa de krumo para ciertas excepciones, por ejemplo, acceder a una propiedad no existente en un EntityMetadataWrapperobjeto.
artfulrobot
3
Para los errores de EntityMetadataWrapper, vaya a la línea del error informado e inserte ddebug_backtrace();justo antes de esa línea. ¡No olvides eliminar eso, por supuesto!
Duncanmoo
¿Se registran estos mensajes en algún lugar o es posible hacer que entren en un registro? De alguna manera es inútil en la producción.
Hjulle
1

en su sistema drupal en la sección de módulos debajo de los módulos principales, es un módulo syslog para almacenar el registro en el disco. Espero que ayude a lo que estás buscando.

samir mankar
fuente
1
Desafortunadamente, esto no funciona en errores fatales (como errores de falta de memoria).
stefgosselin
0

Para Drupal 7 y 8, el módulo de inspección es ideal para rastrear.

Puede agregarlos a los archivos o al registro en la base de datos de Drupal en lugar de mostrarlos, lo cual es útil en los casos en que Krumo retrocede ddebug_backtrace()y otras soluciones que crean un resultado directo en pantalla fallan. Ese es el caso de errores y excepciones que suceden antes de que se inicie la salida de representación.

El área de configuración de back-end de administración para inspeccionar contiene una buena referencia rápida para su uso en el código.

Tanius
fuente
2
Busqué en los inspectdocumentos, pero no vi una forma de usarlo para generar un seguimiento de la pila en caso de error. ¿Es eso algo que puede hacer?
Ken Williams
0

El módulo Trace funcionó mucho mejor para mi situación.

Esta es una herramienta de administrador y administrador de sistemas que agrega amplias funciones de rastreo para invocaciones de gancho de Drupal, consultas de bases de datos y errores de PHP.

Algunas características proporcionadas por la versión 1.0 de este módulo:

  • Emite mensajes de rastreo a un archivo o al syslog (en plataformas Unix).
  • Rastrea invocaciones de gancho de Drupal con un filtro opcional y rastreo de pila.
  • Rastrea advertencias y errores de PHP con un rastreo de pila completa opcional.
  • Rastrea consultas de bases de datos SQL con filtrado opcional por tipo de consulta.
  • La salida de rastreo incluye información de sincronización de microsegundos.
  • Los seguimientos de pila incluyen los argumentos pasados ​​de la función en sintaxis PHP.
  • La salida de depuración opcional incluye superglobales PHP y encabezados HTTP.
  • Define un enlace que permite que otros módulos extiendan los objetivos de salida de rastreo.
deweydb
fuente
1
Ahora este módulo ya no está en desarrollo y aparentemente no hay una versión D7 disponible ... :(
tanius