如何在 bash 包装器中调试 perl
我正在调试由 bash 脚本启动的 Perl 程序。因为Perl脚本由大量的Perl模块组成,需要提供极其复杂的选项,所以这里的bash包装器肯定是必要的。
由于这个限制,就我而言,我无法使用 Perl 调试器,这是我认为最简单的方法。然后我转向旧的好 printf
。但是,即使我将 printf
从不同模块中的一个位置添加到另一个位置,实际上没有任何内容打印到我启动 bash 包装器的终端。
因此,我希望您首先解释一下为什么我无法从 Perl 脚本内部获取任何打印信息,以及如何解决我在这种情况下调试 Perl 程序的问题。
I'm debugging a Perl program started by a bash script. Because the Perl script consist of a huge number of Perl modules and needs to provide extremely complex options, so the bash wrapper here is definitely necessary.
Due to that limitation, in my case I can't use Perl debugger, which is the easiest way I guess. Then I turn to the old good printf
. But, even though I add printf
s from one to another places in different modules, nothing actually be printed out to the terminal where I start the bash wrapper.
So, I'd like you to first explain why I can't get any print info from the inside Perl scripts and how to solve my problem in this case to debug the Perl program.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
大概是您的 bash 脚本正在吞噬输出。
弄清楚 bash 正在做什么,并使用相同的参数和环境变量直接调用 perl。
Presumably your bash script is swallowing the output.
Figure out what the bash is doing, and call perl directly with the same arguments and environment variables.
Quick Bash Hack
应该可以将
STDOUT
和STDERR
重定向到文件:Quick Perl Hack
滚动一个子程序来打印调试输出:
Perl 最佳实践
和
Qualm
最好 尽可能避免
printf
并使用print
相反。Quick Bash Hack
It should be possible to redirect
STDOUT
andSTDERR
to file:Quick Perl Hack
Roll a sub to print debug output:
Perl Best Practices
and
Qualm
It's better to avoid
printf
whenever possible and useprint
instead.