核心调试功能§
trace
实用程序§
trace
实用程序导致程序逐行打印出执行了哪些行
use trace;sub foofoo;# OUTPUT:# 2 (/tmp/script.raku line 2)# sub foo { say "hi" }# 5 (/tmp/script.raku line 3)# foo# 3 (/tmp/script.raku line 2)# say "hi"# hi
Dumper 函数 (dd
)§
Tiny Data Dumper:此函数获取变量的输入列表,并以易于阅读的格式在 $*ERR
上note
它们,同时还有变量的name
。例如,这会将作为参数传递的变量打印到标准错误流
my = 42;my = "a" => 1, "b" => 2, "c" => 3;dd , ;#`( OUTPUT:Hash %hash = {:a(1), :b(2), :c(3)}Int $a = 42)
请注意,dd
将忽略命名参数。你可以使用 Capture
或 Array
来强制它转储传递给它的所有内容。
dd \((:a(1), :b(2)), :c(3));dd [(:a(1), :b(2)), :c(3)];
如果你根本不指定任何参数,它只会将当前子例程/方法的类型和名称打印到标准错误流
sub a ; a # OUTPUT: «sub a()»
这可以作为一个廉价的跟踪函数派上用场。
使用回溯§
Backtrace
类获取当前调用堆栈,并可以将其作为字符串返回
my = Backtrace.new;sub innersub outerouter;# OUTPUT:# raku /tmp/script.raku# in sub inner at /tmp/script.raku line 2# in sub outer at /tmp/script.raku line 3# in block <unit> at /tmp/script.raku line 4
环境变量§
有关更多信息,请参阅 Raku 环境变量 和 从命令行运行 rakudo。
生态系统调试模块§
Rakudo(Raku 编译器)至少有两种有用的调试器和两种跟踪器可用。有关这些模块的更多信息,请参阅其文档。
从历史上看,其他模块已经存在,而其他模块很可能在未来编写。请查看 Raku 模块 网站以获取更多此类模块。
Debugger::UI::CommandLine
§
Rakudo 的命令行调试器前端。此模块安装 raku-debug-m
命令行实用程序,并与 Rakudo Star 发行版捆绑在一起。请查看 其存储库 以获取说明和教程。
Grammar::Debugger
(以及同一发行版中的 Grammar::Tracer
)§
对 Raku 语法的简单跟踪和调试支持。
Trait::Traced
§
这提供了is traced
特性,它会自动追踪应用该特性的任何功能的使用情况。应用该追踪的任何功能以及追踪如何处理都是可定制的。有关其工作原理的更多信息,请参阅其文档。