Perl脚本如何知道它是否';调试器中正在运行什么?
我有一个脚本,可以正常地将STDIN/STDOUT重定向到一个文件。但是,如果不这样做的话,调试会更加高效。是否有$DB:xxx变量或其他让脚本知道它可以不同行为的东西?通过DB.pm(Perl脚本如何知道它是否';调试器中正在运行什么?,perl,debugging,Perl,Debugging,我有一个脚本,可以正常地将STDIN/STDOUT重定向到一个文件。但是,如果不这样做的话,调试会更加高效。是否有$DB:xxx变量或其他让脚本知道它可以不同行为的东西?通过DB.pm(perldoc-mdb)的perl源代码阅读,我注意到,$SIG{INT}是全局设置的 至少对于一个微不足道的程序来说,这似乎是可行的: if (\&DB::catch && $SIG{'INT'} && $SIG{'INT'} == \&DB::catch) {
perldoc-mdb
)的perl源代码阅读,我注意到,$SIG{INT}
是全局设置的
至少对于一个微不足道的程序来说,这似乎是可行的:
if (\&DB::catch && $SIG{'INT'} && $SIG{'INT'} == \&DB::catch) {
say "Debugging ?"
}
如果不适用,我想可以将DB.pm子类化,并创建一个简单的调试器,该调试器覆盖
cont
,并执行额外的簿记…我没有找到任何方法来确定调试器是否直接运行,但您可以使用以下命令检查著名的调试器变量$DB::single
是否存在:
if ($DB::{single}) {
say "Debugging";
}
另一种方法是检查是否加载了调试器模块
if ($INC{"perl5db.pl"}) {
say "Debugging";
}
很多东西设置了
$SIG{INT}
,所以这有点脆弱。回答得好。这两种方法都简单、有效且效果良好。