1
我有一個代碼路徑,有時會發出警告。由於這條路很多時候都會使用,所以我不想在每次傳球時突破。我如何才能在發出警告的時候突破?如何解決perl調試器中的警告?
我有一個代碼路徑,有時會發出警告。由於這條路很多時候都會使用,所以我不想在每次傳球時突破。我如何才能在發出警告的時候突破?如何解決perl調試器中的警告?
您可以使用「信號處理程序」進行警告並設置標誌,然後在設置標誌時中斷。
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;
}
use warnings qw(FATAL);
這將警告轉換爲錯誤的詞彙範圍,這將自動導致調試器打破。
我只添加了'$ SIG {__ WARN__} = sub {$ DB :: single = 1; CORE :: warn(@_)};'在調試器中用's'退回到我想要的位置。 – knarf 2013-02-19 18:23:49
如果您不介意必須離開信號處理程序,那也可以工作。 – mob 2013-02-19 22:25:13