如何根据错误生成堆栈跟踪


20

我是sysadmin,正在尝试调试Drupal网站。在我的服务器日志中,我可以看到Drupal一次又一次地向我们的Solr实例发出相同的请求,直到PHP最终耗尽内存,并且Apache返回500错误。

如何配置Drupal在磁盘上的某个位置记录堆栈跟踪?

Answers:


15

您可以使用Devel模块,并选择其在配置页面admin / config / development / devel中提供的“ Krumo Backtrace”选项之一。

克鲁姆回溯

确保访问admin / config / development / logging并选择“错误和警告”或“所有消息”。如果您启用了Syslog模块或任何其他日志记录模块,则可能需要禁用它并启用Dblog模块。

回溯配置


6
我发现此方法无法为某些异常提供回溯功能,例如访问EntityMetadataWrapper对象上不存在的属性。
artfulrobot 2015年

3
对于EntityMetadataWrapper错误,转到报告的错误中的行,ddebug_backtrace();然后在该行之前插入。当然不要忘记删除它!
Duncanmoo

这些消息是否记录在某处,或者有可能使它们成为日志?否则在生产上是没有用的。
Hjulle

1

在您的drupal系统的“核心模块”下的“模块”部分中,它们是syslog模块,用于将日志存储在磁盘上。希望它对您的寻找有所帮助。


1
不幸的是,这不适用于致命错误(例如内存不足错误)。
stefgosselin 2012年

0

对于Drupal 7和8,模块检查非常适合回溯。

它可以将它们添加到文件或Drupal数据库中的日志中,而不是显示它们,这在Krumo回溯ddebug_backtrace()以及其他创建直接屏幕输出的解决方案失败的情况下很有用。在渲染输出开始之前发生错误和异常的情况就是这样。

用于检查的admin后端配置区域包含一个很好的快速参考,用于其在代码中的用法。


2
我在inspect文档中闲逛,但没有看到使用它来生成错误时堆栈跟踪的方法。那是可以做的吗?
肯·威廉姆斯

0

跟踪模块的工作更好的为我的处境。

这是一个系统管理员和开发人员工具,为Drupal挂钩调用,数据库查询和PHP错误添加了广泛的跟踪功能。

版本1.0此模块提供的一些功能:

  • 将跟踪消息输出到文件或系统日志(在Unix平台上)。
  • 使用可选的过滤器和堆栈跟踪来跟踪Drupal钩子调用。
  • 使用可选的完整堆栈跟踪来跟踪PHP警告和错误。
  • 跟踪SQL数据库查询,并按查询类型进行可选过滤。
  • 跟踪输出包括微秒级定时信息。
  • 堆栈跟踪包括PHP语法中函数传递的参数。
  • 可选的调试输出包括PHP超全局变量和HTTP标头。
  • 定义一个挂钩,允许其他模块扩展跟踪输出目标。

1
现在该模块不再开发,并且似乎没有D7版本可用……:(
tanius
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.