gpt4 book ai didi

perl - 如何跟踪对 Perl 对象的引用?

转载 作者:行者123 更新时间:2023-12-04 12:25:27 25 4
gpt4 key购买 nike

我正在尝试修复我的代码,使 Perl 能够通过削弱引用和中断循环来恢复不需要的数据。

我最近在 How to access Perl ref counts 上问了一个问题答案对我来说效果很好。

对于我的一些对象,引用计数 > 1,我不知道为什么。

有没有办法让我添加回调或其他东西来帮助我知道引用计数何时增加?我想知道谁在引用一个对象。

最佳答案

实现 Devel::XXX检查对象引用计数的包?

package Devel::Something;
# just emulating Devel::Trace here
# see http://cpansearch.perl.org/src/MJD/Devel-Trace-0.10/Trace.pm
sub DB::DB {
if ($Devel::Something::CHECK) {
my ($package, $file, $linenumber) = caller;
... inspect current refcounts
... if any have changed, print out the details
... including current package/file/linenumber
$Devel::Something::CHECK = 0; # disable until it's enabled again
}
}
1;
# my program
... do some stuff ...
$Devel::Something::CHECK = 1;
... do some more stuff ...
$Devel::Something::CHECK = 1;
$ perl -d:Something my_program.pl ...

你可以撒 $Devel::Something::CHECK = 1在整个代码的适当位置声明,或更改 DB::DB 中的条件定期运行(例如, if (++$Devel::Something::CHECK % 100 == 0) { 在每 100 次语句评估后进行检查)。

关于perl - 如何跟踪对 Perl 对象的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2365312/

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