【问题标题】:How can I get error stacktrace in Mojolicious?如何在 Mojolicious 中获取错误堆栈跟踪?
【发布时间】:2019-03-05 02:27:29
【问题描述】:

我的控制器中有一些 xml 解析程序(由XML::LibXML::Simple 执行)

在页面渲染过程中出现错误

并且没有与 stacktrace 的“点击更多”链接,mojolicious 通常在面对外部模块中的die 时产生该链接(以下是示例)

为什么它没有获取堆栈跟踪,我如何手动获取堆栈跟踪?

我尝试插入

use Carp;
$SIG{__DIE__} = sub {
   app->log->error("Stacktrace: ". Carp::longmess($_[0]) );
};

在我的应用中,但没有产生输出

【问题讨论】:

  • 这看起来像是与 XML::LibXML 中的错误报告的不幸交互,我过去遇到了很多麻烦。解析错误从 XS 代码可能报告为 XML::LibXML::Error 对象,因此它们不会被 Mojo::Exception (这是提供堆栈跟踪的内容)包装,并且它们不会报告文件名(开头的数字是行号)。
  • 解析的是 XML 数据中的行号,而不是解析的代码中的行号。

标签: xml perl stack-trace mojolicious


【解决方案1】:

您可以通过调用手动获取堆栈跟踪:

$e->frames([$frame1, $frame2]);

documentaion

其中$eMojo::Exception 对象

【讨论】:

    猜你喜欢
    • 2014-08-20
    • 2013-04-18
    • 2010-10-11
    • 2010-09-11
    • 2010-12-06
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多