内容

名称

Test2::EventFacet::Trace - 事件调试信息

描述

Test2::API::Context 对象,以及所有 Test2::Event 类型都需要访问有关它们创建位置的信息。此对象表示该信息。

概要

use Test2::EventFacet::Trace;

my $trace = Test2::EventFacet::Trace->new(
    frame => [$package, $file, $line, $subname],
);

面字段

$string = $trace->{details}
$string = $trace->details()

用作自定义跟踪消息,将在调用 $trace->debug 时用作 at <FILE> line <LINE> 的替代。

$frame = $trace->{frame}
$frame = $trace->frame()

获取调用帧数组引用。

[$package, $file, $line, $subname]
$int = $trace->{pid}
$int = $trace->pid()

生成事件的进程 ID。

$int = $trace->{tid}
$int = $trace->tid()

生成事件的线程 ID。

$id = $trace->{cid}
$id = $trace->cid()

用于创建事件的上下文的 ID。

$uuid = $trace->{uuid}
$uuid = $trace->uuid()

用于创建事件的上下文的 UUID。(如果启用了 uuid 标记)

($pkg, $file, $line, $subname) = $trace->call

获取基本调用信息作为列表。

@caller = $trace->full_call

获取完整的调用者(N)结果。

$warning_bits = $trace->warning_bits

从完整的调用者信息中获取索引 9。这是 warnings_bits 字段。

此值在不同的 perl 版本或甚至进程之间不可移植。但是,它可以在生成它的进程中使用,以在新的作用域中重现警告设置。

eval <<EOT;
BEGIN { ${^WARNING_BITS} = $trace->warning_bits };
... context's warning settings apply here ...
EOT

这些字段并不总是由工具正确设置。这些字段大多已被 Test2::EventFacet::Hub 面向对象弃用。这些字段不是必需的,并且可能只反映事件创建时当前的 hub,这并不一定与事件发送的 hub 相同。

一些工具确实很好地将这些字段设置为正确的 hub,但你不能总是依赖于此。请改用 'hubs' 面向对象列表。

$hid = $trace->{hid}
$hid = $trace->hid()

创建事件时当前 hub 的 ID。

$huuid = $trace->{huuid}
$huuid = $trace->huuid()

创建事件时当前 hub 的 UUID。(如果启用了 uuid 标记)。

$int = $trace->{nested}
$int = $trace->nested()

事件的嵌套深度。

$bool = $trace->{buffered}
$bool = $trace->buffered()

如果事件被缓冲并且没有独立于父级发送到格式化程序,则为真(当嵌套为 0undef 时,不应设置此值)。

方法

注意:所有方面框架也是方法。

$trace->set_detail($msg)
$msg = $trace->detail

用于获取/设置自定义跟踪消息,该消息将在调用 $trace->debug 时用作 at <FILE> line <LINE> 的替代。

detail()details 方面字段的别名,用于向后兼容。

$str = $trace->debug

通常返回字符串 at <FILE> line <LINE>。如果设置了 detail,则将返回其值。

$trace->alert($MESSAGE)

这会在框架(应报告错误的文件名和行号)处发出警告。

$trace->throw($MESSAGE)

这会在框架(应报告错误的文件名和行号)处抛出异常。

($package, $file, $line, $subname) = $trace->call()

获取调试信息的调用者详细信息。这是应报告错误的位置。

$pkg = $trace->package

获取调试信息包。

$file = $trace->file

获取调试信息文件名。

$line = $trace->line

获取调试信息行号。

$subname = $trace->subname

获取调试信息子例程名称。

$sig = trace->signature

获取标识此跟踪的签名字符串。这用于检查多个事件是否相关。签名包括 pid、tid、文件、行号和 cid。

来源

Test2 的源代码存储库可以在 http://github.com/Test-More/test-more/ 找到。

维护者

Chad Granum <[email protected]>

作者

Chad Granum <[email protected]>

版权

版权所有 2020 Chad Granum <[email protected]>.

本程序是自由软件;您可以根据 Perl 本身相同的条款重新发布和/或修改它。

参见 https://dev.perl5.cn/licenses/