2

我有一个有时会发出警告的代码路径。由于这条路径被使用了很多次,我不想在每次通过时都中断。我怎样才能只在它发出警告时才中断?

4

2 回答 2

3

您可以使用“信号处理程序”发出警告并设置标志,然后在设置标志时中断。

our $warn_flag = 0;
$SIG{__WARN__} = sub { $warn_flag = 1; CORE::warn(@_) };

...

for $i (1 .. 1_000_000_000) {
    do_something_that_might_warn();
    $DB::single ||= $warn_flag;
    $warn_flag = 0;
}
于 2013-02-19T17:53:46.043 回答
1
use warnings qw(FATAL);

这会将警告转换为词法范围内的错误,这将自动导致调试器中断。

于 2013-02-19T18:58:42.797 回答