我有一个脚本可以正常将 STDIN/STDOUT 重定向到文件。但是,如果不这样做,调试的效率会高得多。是否有 $DB:xxx 变量或让脚本知道的东西,以便它可以表现不同?
$DB::single我没有找到任何方法来确定它们的调试器是否直接运行,但您可以使用以下命令检查是否存在众所周知的调试器变量:
if ( $DB::{ single } ) {
say "Debugger is running";
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是检查调试器模块是否已加载。
if ( $INC{ "perl5db.pl" } ) {
say "Debugger is running";
}
Run Code Online (Sandbox Code Playgroud)
最后,调试器要求 Perl 运行在调试支持模式下,并$^P指示 Perl 是否处于该模式。
if ( $^P ) {
say "Perl is in debug support mode";
}
Run Code Online (Sandbox Code Playgroud)
调试器并不是唯一需要将 Perl 置于调试支持模式的工具。其他包括 Devel::NYTProf、Devel::Cover、Devel::Trace 等等。因此这种方法不能用于专门检查调试器是否正在运行。但这可能是您真正想要的。