简体   繁体   English

如何在perl调试器中打破警告?

[英]How can I break on warnings in the perl debugger?

I have a codepath that sometimes emits warnings. 我有一个有时会发出警告的代码路径。 Since this path is used a lot of times I don't want to break on each pass. 由于这条路径经常使用很多次,所以我不希望每次通过都会中断。 How can I break only on times it emits warnings? 我怎样才能在发出警告的时候打破?

You can use a "signal handler" for warnings and set a flag, then break when the flag is set. 您可以使用“信号处理程序”作为警告并设置标志,然后在设置标志时中断。

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);

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM