問題タブ [pp-perl-par-packager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - perl PAR パッケージャー (pp) を使用して作成された実行可能ファイルをデバッグするにはどうすればよいですか?
PAR パッケージャー (pp)を使用foo.exe
して、Perl スクリプトから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>
、短い 16 進文字列と長い 16 進文字列です。...\perl.exe foo.pl
代わりに見つけたいと思っていたので-d
、コマンドラインに挿入することができました。
そのフォルダーで実行foo.exe
すると、「@INC で PAR.pm が見つかりません」というエラーが発生します。
その同じフォルダーには、多数の *.pm、*.dll (perl528.dll を含む)、およびいくつかの *.pl ファイルも含まれており、*.pl および *.pm ファイルには短い 16 進文字列の名前が付いています。foo.pl
*.pl ファイルの 1 つ (プロセスの PAR_0 環境変数に記述されているファイル) の内容は、次の 2 行が前に付いたものと同じであることが判明しました。
perl -Iinc/lib <ID>.pl
そのフォルダーでその perl スクリプトの名前を使用して実行<ID>.pl
すると、目的の結果が生成されます。つまり、exe が実行される問題は発生しません。そのフォルダー内の perl528.dll およびその他の dll が Perl を構成するビットであると予想していますが、それらを呼び出す方法がわかりません。そのfoo.exe
フォルダーのサイズはわずか 78 kB であるため、他のビットが作業を行う以上のことはできません。