如何调试使用perl PAR打包程序(pp)创建的可执行文件?

时间:2020-05-25 09:13:27

标签: perl debugging pp-perl-par-packager

我已经使用PAR packager (pp)从Perl脚本foo.exe创建Windows可执行文件foo.pl。 Perl脚本运行良好(perl foo.pl <arguments>)。该可执行文件也可以运行(foo.exe <arguments>),但不会产生与Perl脚本相同的结果。我想调试可执行文件运行的perl脚本,以找出差异的来源。我怎么做?换句话说,如何将-d传递给执行perl.exe时开始的foo.exe

附录2020-05-26

使用“ Process Explorer”,我发现最终被执行的应用程序。它是%TEMP%\par-<ID1>\cache-<ID2>\foo.exe,其中<ID1><ID2>是长短十六进制字符串。我原本希望找到...\perl.exe foo.pl,然后将-d注入命令行。

在该文件夹中运行foo.exe会产生错误“无法在@INC中找到PAR.pm”。

该文件夹还包含多个* .pm,*。dll(包括perl528.dll)和一些* .pl文件,其中* .pl和* .pm文件的名称均为短十六进制字符串。 * .pl文件之一(该过程的PAR_0环境变量中提到的文件)的内容与foo.pl相同,并带有以下两行前缀:

package main;
#line 1 "script/foo.pl"

如果我在该文件夹中运行perl -Iinc/lib <ID>.pl,并且使用<ID>.pl这个perl脚本的名称,那么它将产生所需的结果,即不会遇到exe所遇到的问题。我希望该文件夹中的perl528.dll和其他dll是组成Perl的位,但不知道如何调用它们。该文件夹中的foo.exe大小仅为78 kB,因此它所做的工作不亚于让其他位完成工作。

0 个答案:

没有答案