提问者:小点点

是否有在perl 6中打印堆栈跟踪的规范方法?


在perl 5中,我会使用任何Carp函数。在perl 6中,搜索无济于事,trace pragma将打印所有堆栈,而不仅仅是我想要的堆栈。我只能使用抛出异常、捕获它并打印它的旧技巧:

try {
    X::AdHoc.new(payload => 'Stack').throw;
    CATCH { when X::AdHoc { .say; } }
}

或者,稍微懒一点:

{
    die;
    CATCH { default { .say } }
}

做这件事的正确方法是什么?


共1个答案

匿名用户

我实际上在写这个问题时找到了答案,并决定将其发布在这里,因为它没有出现在我之前的任何搜索中。Perl 6的Backtrace类将获取堆栈跟踪并将其转换为字符串:

say "Stack: " ~ Backtrace.new;

(使用Backtrace.new. ful查看一些通常隐藏的其他低级堆栈帧。)