gpt4 book ai didi

perl - 限制 Perl 调试器打印的信息量

转载 作者:行者123 更新时间:2023-12-04 16:23:52 24 4
gpt4 key购买 nike

我对调试 Perl 代码(在命令行调试器中,perl -d 中)的一个讨厌的事实是,错误地打印(通过 x 命令)巨大数据结构的内容肯定会永远卡住您的终端半年同时打印了 100 页的数据。特别是如果这种情况发生在速度较慢的网络上。

因此,我希望能够限制 x 的数据量。打印。

我看到两种方法 - 如果有人知道该怎么做,我愿意尝试。

  • 限制调试器打印中任何单个命令的数据量。
  • 更好的是,以某种方式替换内置 x带有自定义 Perl 方法的命令(它将计算数据结构的“大小”,并拒绝未经确认就打印其内容)。

  • 我特别询问“如何用自定义代码替换 x”——构建一个足够好的“数据结构是否太大”Perl 方法是我可以不用太多努力自己做的事情,尽管我看到了足够多的预防陷阱“完美”是一项相当令人沮丧的努力。哎呀,仅仅做 Data::Dumper->Dump 并取字符串的长度就可以了:)

    请注意,我非常清楚如何通过递归检查数据结构层(例如打印引用、打印键/数组元素的计数等)来手动避免该问题......重点是我希望能够避免轻率打字 x $huge_pile_of_data不假思索 - 或者偶然发现一个错误,将大量数据填充成应该是标量的内容。

    最佳答案

    x命令采用可选参数来显示最大深度。这与将数据量限制为 N 页并不完全相同,但对于防止过载绝对有用。

      DB<1> %h = (a => { b => { c => 1 } } )

    DB<2> x %h
    0 'a'
    1 HASH(0x1d5ff44)
    'b' => HASH(0x1d61424)
    'c' => 1

    DB<3> x 2 %h
    0 'a'
    1 HASH(0x1d5ff44)
    'b' => HASH(0x1d61424)

    您可以通过 o 指定要打印的默认深度命令,例如
    DB<1>o dumpDepth=1

    将其添加到您的 .perldb文件以将其应用于所有调试器 session 。

    否则,它看起来像 x命令调用 DB::dumpit()这只是 dumpval.pl 的包装器(或者,更具体地说,它定义的 main::dumpValue() 子)。您可以根据需要修改/替换该脚本。不过,我不确定您将如何使其具有交互性。

    关于perl - 限制 Perl 调试器打印的信息量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2364386/

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