Come generare una traccia dello stack in caso di errori


20

Sono amministratore di sistema cercando di eseguire il debug di un sito Drupal. Nei registri del mio server posso vedere Drupal che fa ripetutamente le stesse richieste alla nostra istanza Solr fino a quando PHP alla fine esaurisce la memoria e Apache restituisce un errore 500.

Come posso configurare Drupal per registrare una traccia dello stack da qualche parte sul disco?

Risposte:


15

Puoi usare il modulo Devel e selezionare una delle opzioni "Krumo Backtrace" che fornisce nella sua pagina di configurazione su admin / config / development / devel.

Krumo Backtrace

Assicurati di visitare admin / config / development / logging e selezionare "Errori e avvisi" o "Tutti i messaggi". Se si dispone del modulo Syslog o di qualsiasi altro modulo di registrazione abilitato, potrebbe essere necessario disabilitarlo e abilitare il modulo Dblog.

configurazione backtrace


6
Trovo che questo metodo non riesca a restituire krumo per alcune eccezioni, ad esempio l'accesso a una proprietà inesistente su un EntityMetadataWrapperoggetto.
artfulrobot

3
Per gli errori EntityMetadataWrapper vai alla riga dell'errore segnalato e inserisci ddebug_backtrace();poco prima di quella riga. Non dimenticare di rimuoverlo ovviamente!
Duncanmoo,

Questi messaggi sono registrati da qualche parte o è possibile farli entrare in un registro? Altrimenti è in qualche modo inutile in produzione.
Hjulle

1

nel tuo sistema drupal nella sezione dei moduli sotto i moduli core è il loro modulo syslog per memorizzare il registro sul disco. spero che aiuti ciò che stai cercando.


1
Questo non funziona su errori fatali (come errori di memoria insufficiente), sfortunatamente.
Stefgosselin,

0

Per Drupal 7 e 8, il modulo inspect è ottimo per i backtrace.

Può aggiungerli ai file o al registro nel database Drupal piuttosto che mostrarli, il che è utile nei casi in cui Krumo backtrace ddebug_backtrace()e altre soluzioni che creano output sullo schermo diretto falliscono. Questo è il caso di errori ed eccezioni che si verificano prima dell'inizio del rendering dell'output.

L'area di configurazione del backend dell'amministratore per inspect contiene un riferimento rapido per l'utilizzo nel codice.


2
Ho cercato nei inspectdocumenti, ma non vedevo un modo per usarlo per generare una traccia dello stack in caso di errore. È qualcosa che può fare?
Ken Williams,

0

Il modulo Trace ha funzionato molto meglio per la mia situazione.

Questo è un amministratore di sistema e uno strumento di sviluppo che aggiunge ampie funzionalità di tracciamento per invocazioni di hook Drupal, query di database ed errori PHP.

Alcune funzionalità fornite dalla versione 1.0 questo modulo:

  • Emette i messaggi di traccia in un file o nel syslog (su piattaforme Unix).
  • Traccia le invocazioni di hook di Drupal con un filtro opzionale e traccia stack.
  • Tiene traccia degli avvisi e degli errori di PHP con una traccia dello stack completo opzionale.
  • Tiene traccia delle query del database SQL con filtro opzionale per tipo di query.
  • L'output della traccia include informazioni sulla temporizzazione a livello di microsecondi.
  • Le tracce dello stack includono gli argomenti passati della funzione nella sintassi di PHP.
  • L'output di debug opzionale include superglobali PHP e intestazioni HTTP.
  • Definisce un hook che consente ad altri moduli di estendere le destinazioni di output della traccia.

1
Ora questo modulo non è più in fase di sviluppo e apparentemente non è disponibile una versione D7 ... :(
tanius
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.