web-dev-qa-db-ja.com

Perlでトレースをオンにする方法はありますか(bash -xと同等)?

Perlのシステムスクリプトがあります。スクリプトの何が問題になっているのかを判断するには、bash-xに相当するものが必要です。同等のものはありますか?

編集:bash -xが行うことは、評価されるときに各行を出力することです。これにより、パス変数またはファイルが欠落しているコードのデバッグが非常に簡単になります。

37
Let_Me_Be

Devel::Trace または Devel::ebug を見てください。

w.plという名前のこのプログラムを考えると:

#!/usr/bin/Perl

use strict;
use warnings;

my $answer = 42;

if ($answer == 6 * 9) {
    print "everything is running fine.\n";
} else {
    warn "there must be a bug somewhere...\n";
}

Devel::Traceを使用して、実行を監視できます。

Perl -d:Trace w.pl

これにより、次の出力が生成されます。

>> w.pl:6: my $answer = 42;
>> w.pl:8: if ($answer == 6 * 9) {
>> w.pl:11:     warn "there must be a bug somewhere...\n";
there must be a bug somewhere...
42
Chas. Owens

Devel::DumpTrace モジュールは2011年から利用可能です。

使用例:

$ cat demo.pl
# demo.pl
# a demonstration of Devel::DumpTrace
$a = 1;
$b = 3;
$c = 2 * $a + 7 * $b;
@d = ($a, $b, $c + $b);

$ Perl -d:DumpTrace demo.pl
>>>>> demo.pl:3:        $a:1 = 1;
>>>>> demo.pl:4:        $b:3 = 3;
>>>>> demo.pl:5:        $c:23 = 2 * $a:1 + 7 * $b:3;
>>>>> demo.pl:6:        @d:(1,3,26) = ($a:1, $b:3, $c:23 + $b:3);
8
mob

「Perl-d」(デバッガーをオンにする)または「Perl-c」(実行する前にスクリプトを確認する)を確認する必要があります

8
Raghuram

Perlスクリプトには常に次のステートメントを含めてください。

use strict;
use warnings;

デバッグする場合は、-dスイッチを使用してください。そして、ここにコマンドがあります: http://www.domainavenue.com/pl-debug.htm

お役に立てば幸いです。

2
Ruel