【发布时间】:2011-11-27 15:53:22
【问题描述】:
我正在调试一个由 bash 脚本启动的 Perl 程序。因为 Perl 脚本由大量 Perl 模块组成,需要提供极其复杂的选项,所以这里的 bash wrapper 是绝对有必要的。
由于这个限制,就我而言,我不能使用 Perl 调试器,这是我猜想的最简单的方法。然后我转向老好printf。但是,即使我将printfs 从一个位置添加到不同模块中的另一个位置,实际上也不会将任何内容打印到我启动 bash 包装器的终端。
所以,我希望您先解释一下为什么我无法从 Perl 脚本内部获取任何打印信息,以及在这种情况下如何解决我的问题以调试 Perl 程序。
【问题讨论】:
-
“因为 perl 脚本包含大量的 perl 模块,并且需要提供极其复杂的选项,所以这里的 bash 包装器绝对是必要的”——这不符合。 Perl 不缺少解析命令行选项或呈现 UI 的工具,也不缺少用于编写处理 CPAN 依赖项的安装程序的系统。
-
@Quentin:问题是没有人想在每次运行时在命令行中手动提供选项列表,所以我们需要一个包装器来以某种方式在大多数情况下进行硬编码选项。但你是对的,包装器不必是 bash,完全同意。
-
但我们现在不是在谈论“每次运行”,而是在谈论“单次调试运行”。找出包装器如何调用您的 perl 程序,然后使用额外的 -d 开关以这种方式调用它。