gpt4 book ai didi

perl - 如何追踪 Devel::Peek 的起源

转载 作者:行者123 更新时间:2023-12-04 22:11:03 24 4
gpt4 key购买 nike

出乎意料的是,我开始看到这样的行:

SV = PVIV(0x38fe3f0) at 0x3de5b80
REFCNT = 1
FLAGS = (PADMY)
IV = 0
PV = 0

这些不会始终如一地出现,如果我重复运行脚本,使用相同的输入,这个输出有时会出现,有时甚至两次,有时根本没有。

每隔一段时间,脚本就会挂起并显示一条错误消息,说“Perl 不幸停止运行”。

显然是 Devel::Peek 的输出,但我的模块都没有使用它,我使用的唯一 CPAN 模块是 Log::Log4perl,
Data::Dumper::AutoEncode(当然使用 Data::Dumper)和 List::Util。
所有这些我都广泛使用,但我从来没有得到过这种输出。

盒子:Win-7 Pro 64 位

我的perl5(revision 5 version 18 subversion 2)配置总结:
  Platform:
osname=MSWin32, osvers=6.2, archname=MSWin32-x64-multi-thread
uname='Win32 strawberry-perl 5.18.2.1 #1 Tue Jan 7 22:32:35 2014 x64'

有人可以建议我可以采取哪些步骤来找到它的起源以及它为什么会发生?

谢谢

最佳答案

在脚本的顶部,添加以下内容:

BEGIN {
use Carp qw( );
use Devel::Peek qw( );
my $old = \&Devel::Peek::Dump;
my $new = sub { Carp::cluck("Devel::Peek::Dump got called somewhere!"); &$old };
no warnings 'redefine';
*Devel::Peek::Dump = $new;
}

这需要在任何人导入 Dump 之前发生来自Devel::Peek。
Carp::cluck 的输出将包括一个堆栈跟踪。

关于perl - 如何追踪 Devel::Peek 的起源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33960768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com