【问题标题】:Is it possible to compile perl with -DDEBUGGER option on Windows using ActivePerl?是否可以使用 ActivePerl 在 Windows 上使用 -DDEBUGGER 选项编译 perl?
【发布时间】:2008-12-30 11:49:53
【问题描述】:

有很多调试选项可用,但它说你需要编译 Perl -DDEBUGGER 选项。我们如何在 Windows 上使用 ActivePerl 做到这一点。

另外,我在使用 Perl 时遇到了内存不足的问题。我正在读取一个包含 5 行的 XML 文件,但第二行对于 5 行来说太大了(文件大小为 4.3Mb)。 它不解析第二行并且无法打印该行:

print $_ if /match/ ; #match does exists fyi

那我该如何解析第二行呢?

【问题讨论】:

  • 你应该把它分成不同的问题。
  • 您需要 -DDEBUGGER 有什么原因吗?不要粗鲁,但如果有人不知道如何编译 Perl,我通常不会期望他们需要它。您从中获得的额外信息非常低级和详细。

标签: perl memory debugging compilation


【解决方案1】:

您确定您的 ActivePerl 二进制文件尚未使用调试支持进行编译吗?我知道 ActiveState 提供了一个图形调试器,其功能与本机 Perl 调试器几乎相同,所以我假设他们的二进制文件已经编译并支持调试。

您的第二个问题实际上与第一个问题无关,您应该将其作为一个单独的问题发布。但要尝试回答:我怀疑它“太大”无法解析,因为你只受系统内存的限制,而 4.3Mb 按现代标准来说并没有那么大,即使你的正则表达式相当复杂(它没有t 似乎是)。您确定要匹配的模式确实包含在该行中吗?

我有点迷茫,因为我不明白基于简单的正则表达式匹配从文件中打印几兆字节单行的意义,尤其是。当整个文件只有 5 行时。你到底想完成什么?

【讨论】:

  • -DDEBUGGING 是额外调试的东西,而不仅仅是你从普通的 -d 中得到的东西。
  • 好点,我仍然不清楚标准 ActiveState 二进制文件是否使用该选项编译。
  • 运行 perl -v 找出存在的选项。
【解决方案2】:

ActiveState 将其源代码贡献回主要的 Perl 源代码,因此您可以根据需要自行编译它。您只需使用与 ActiveState 相同的编译器。您应该能够通过从命令窗口运行 perl -V 来查看 ActiveState 使用的所有编译选项。

但是,您可能不必这样做。如果您告诉我们您要完成的工作,我们也许可以为您提供更好的答案。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    相关资源
    最近更新 更多