Como gerar um rastreamento de pilha em caso de erros

20

Eu sou sysadmin tentando depurar um site Drupal. Nos logs do meu servidor, vejo o Drupal fazendo as mesmas solicitações repetidamente para a instância do Solr até que o PHP acabe com a memória e o Apache retorne um erro 500.

Como posso configurar o Drupal para registrar um rastreamento de pilha em algum lugar do disco?

Máx.
fonte

Respostas:

15

Você pode usar o módulo Devel e selecionar uma das opções "Krumo Backtrace" que ele fornece em sua página de configuração em admin / config / development / devel.

Krumo Backtrace

Certifique-se de visitar admin / config / development / logging e selecione "Erros e avisos" ou "Todas as mensagens". Se você tiver o módulo Syslog ou qualquer outro módulo de log ativado, pode ser necessário desativá-lo e ativar o módulo Dblog.

configuração de backtrace

barista amador
fonte
6
Acho que esse método falha ao fornecer o backrace do krumo para certas exceções, por exemplo, acessar uma propriedade inexistente em um EntityMetadataWrapperobjeto.
Artfulrobot 29/05
3
Para os erros EntityMetadataWrapper, vá para a linha no erro relatado e insira ddebug_backtrace();logo antes dessa linha. Não se esqueça de remover isso, é claro!
Duncanmoo
Essas mensagens são registradas em algum lugar ou é possível fazê-las entrar em um log? Caso contrário, é inútil na produção.
Hjulle
1

na seção drupal system in modules, nos módulos principais, é o módulo syslog para armazenar o log no disco. espero que ajude o que você está procurando.

samir mankar
fonte
11
Infelizmente, isso não funciona em erros fatais (como erros de falta de memória).
stefgosselin
0

Para os Drupal 7 e 8, o módulo inspeciona é ótimo para rastreamentos.

Ele pode adicioná-los aos arquivos ou ao log no banco de dados do Drupal, em vez de mostrá-los, o que é útil nos casos em que o Krumo retorna, ddebug_backtrace() e outras soluções que criam saída direta na tela falham. Esse é o caso de erros e exceções que ocorrem antes do início da renderização.

A área de configuração de back-end do administrador para inspecionar contém uma boa referência rápida para seu uso no código.

tanius
fonte
2
Eu procurei nos inspectdocumentos, mas não vi uma maneira de usá-lo para gerar um rastreamento de pilha em caso de erro. Isso é algo que pode fazer?
Ken Williams
0

O módulo Trace funcionou muito melhor para a minha situação.

Esta é uma ferramenta sysadmin & developer que adiciona extensos recursos de rastreamento para chamadas de gancho Drupal, consultas de banco de dados e erros de PHP.

Alguns recursos fornecidos pela versão 1.0 deste módulo:

  • Produz mensagens de rastreamento para um arquivo ou o syslog (em plataformas Unix).
  • Rastreia as chamadas de gancho do Drupal com um filtro opcional e rastreia a pilha.
  • Rastreia avisos e erros do PHP com um rastreamento opcional de pilha completa.
  • Rastreia consultas do banco de dados SQL com filtragem opcional por tipo de consulta.
  • A saída de rastreamento inclui informações de tempo em microssegundos.
  • Os rastreamentos de pilha incluem os argumentos passados ​​da função na sintaxe do PHP.
  • A saída de depuração opcional inclui superglobais do PHP e cabeçalhos HTTP.
  • Define um gancho que permite que outros módulos estendam os destinos de saída de rastreio.
deweydb
fonte
11
Agora este módulo não está mais em desenvolvimento e aparentemente nenhuma versão D7 está disponível ... :(
tanius