【发布时间】: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