1
가끔 경고를내는 코드 경로가 있습니다. 이 경로는 여러 번 사용되기 때문에 각 패스를 어기고 싶지 않습니다. 경고를내는 시간에만 어떻게 깨울 수 있습니까?펄 디버거에서 경고를 어떻게 끊을 수 있습니까?
가끔 경고를내는 코드 경로가 있습니다. 이 경로는 여러 번 사용되기 때문에 각 패스를 어기고 싶지 않습니다. 경고를내는 시간에만 어떻게 깨울 수 있습니까?펄 디버거에서 경고를 어떻게 끊을 수 있습니까?
경고에 "신호 처리기"를 사용하고 플래그를 설정 한 다음 플래그가 설정되면 중단 할 수 있습니다.
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
신호 처리기에서 벗어나지 않아도된다면 효과가 있습니다. – mob